具有相同ID的多个控件

时间:2013-06-07 11:25:17

标签: c# asp.net .net asp.net-1.1

  

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

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

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

4 个答案:

答案 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 之间没有空格。