找到了具有相同ID“xxxx”的多个控件。 FindControl要求控件具有唯一ID。
我想绕过这个验证。我想为多个元素拥有相同的id。我正在创建动态控件,我的css类基于id和类组合应用。当页面第一次加载时,一切正常,但在页面回发时,我收到此错误。
我可以做任何事情来绕过这个验证吗?
答案 0 :(得分:4)
在HTML中,您不能拥有多个具有相同ID的元素。将CSS重写为不基于ID更合乎逻辑。
答案 1 :(得分:2)
你不能,ASP需要唯一的ID。否则将如何知道代码中引用哪个控件?
E.g
string x = NameBox.Text;
如果你有20个,那些都有不同的内容,你会使用哪一个?
我建议你重写你的CSS不是基于ID,也许跟随Harry Roberts Hashed Classes的方式?
答案 2 :(得分:2)
在公共NamingContainer中,不能有多个具有相同服务器ID的元素。
如果你真的想拥有相同的服务器ID,请将你的控件放在单独的NamingContainer(RepeaterItem?)中。
现在,如果您需要相同的Html / DOM ID,则不能拥有它。
使用除Id之外的其他内容来从CSS的角度区分元素。
你可以使用部分匹配的ID ......
*[id*="_MyButtonID"].red {
background-color: red;
}
答案 3 :(得分:1)
为什么不使用你给你的控件多个类而不是依赖ID?尝试使用具有相同ID的控件确实不起作用。
例如:
<asp:TextBox id="textFirstName" runat="server" CssClass="name firstname" />
<asp:TextBox id="textLastName" runat="server" CssClass="name lastname" />
在CSS中,您可以使用选择器(例如 .name.firstname )来选择名称和名字类的元素
注意 - 类名 .name.firstname 之间没有空格。