找到了具有相同 ID 'xxxx' 的多个控件。FindControl 要求控件具有唯一的 ID。
我想绕过这个验证。我想为多个元素使用相同的 id。我正在创建动态控件,并且我的 css 类是基于 id 和类组合应用的。页面第一次加载时一切正常,但在页面回发时出现此错误。
我可以做些什么来绕过这个验证吗?
找到了具有相同 ID 'xxxx' 的多个控件。FindControl 要求控件具有唯一的 ID。
我想绕过这个验证。我想为多个元素使用相同的 id。我正在创建动态控件,并且我的 css 类是基于 id 和类组合应用的。页面第一次加载时一切正常,但在页面回发时出现此错误。
我可以做些什么来绕过这个验证吗?
在 HTML 中,不能有多个具有相同 ID 的元素。听起来更合乎逻辑的是,您将 CSS 重写为不基于 ID。
你不能,ASP 需要唯一的 ID。否则怎么知道在代码中引用哪个控件?
例如
string x = NameBox.Text;
那么,如果你有 20 个内容不同的内容,你会使用哪一个?
我建议你重写你的 CSS 以不基于 ID,也许遵循 Harry Roberts 的哈希类方式?
在一个公共 NamingContainer 中不能有多个具有相同服务器 ID 的元素。
如果您真的想拥有相同的服务器 ID,请将您的控件放在单独的 NamingContainer(RepeaterItem?)中。
现在,如果您需要相同的 Html/DOM ID,您就不能拥有它。
从 CSS 的角度来看,使用 Id 以外的其他内容来区分您的元素。
不过,您可以使用部分匹配的 ID...
*[id*="_MyButtonID"].red {
background-color: red;
}
为什么不使用您为控件提供多个类而不是依赖 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 类的元素
注意- 类名.name.firstname之间没有空格。