具有相同 ID 的多个控件

本文关键字:控件 ID | 更新日期: 2023-09-27 18:17:18

找到具有相同 ID "xxxx"的多个控件。FindControl 要求控件具有唯一的 ID。

我想绕过此验证。我想为多个元素使用相同的 id。我正在创建动态控件,我的 css 类是基于 id 和类组合应用的。第一次加载页面时一切正常,但在页面回发时出现此错误。

我可以做任何事情来绕过此验证吗?

具有相同 ID 的多个控件

在 HTML 中,不能有多个具有相同 ID 的元素。

在一个公共命名容器中不能有多个具有相同服务器 ID 的元素。
如果您确实希望拥有相同的服务器 ID,请将控件放在单独的 NamingContainer (RepeaterItem?( 中。

现在,如果你需要相同的 Html/DOM ID,你就不能拥有它。
使用 Id 以外的其他内容从 CSS 的角度区分元素。
不过,您可以使用部分匹配的 ID...

*[id*="_MyButtonID"].red {
    background-color: red;
}

不能,ASP 需要唯一的 ID。否则,如何知道要在代码中引用哪个控件?

例如

string x = NameBox.Text;

那么,如果你有20个,都有不同的内容,你会使用哪一个?

我建议你重写你的CSS不基于ID,也许遵循Harry Roberts的哈希类方式?

为什么不使用你给你的控件多个类,而不是依赖 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 之间没有空格。