在不同的面板中使用相同的控件 ID

Use same control ID in different Panels

如何为不同的 asp:Panel 服务器控件获取单独的 NamingContainer

在下面的 .aspx 标记中,我看到:

<asp:Panel runat="server" ID="Case1" CssClass="caseEvaluationContainer">
     <asp:Label ID="NamingContainer1" Text=<%# Case1.NamingContainer.UniqueID %> Runat="server"></asp:Label>
     <br />
     <asp:Label ID="UniqueID1" Text="<%# Case1.UniqueID %>" Runat="server"></asp:Label>
</asp:Panel>


<asp:Panel runat="server" ID="Case4" CssClass="caseEvaluationContainer">
     <asp:Label ID="NamingContainer4" Text=<%# Case1.NamingContainer.UniqueID %> runat="server"></asp:Label>
     <br />
     <asp:Label ID="UniqueID4" Text="<%# Case1.UniqueID %>" runat="server"></asp:Label>
</asp:Panel>

UniqueID显示不同,但不是 NamingContainer

我怎样才能让下面的东西起作用(我需要在页面 没有 的情况下使用单独的控件具有相同的 ID数据绑定容器,如 asp:Repeaterasp:FormView.

<asp:Panel runat="server" ID="TestPanel1">
    <asp:TextBox runat="server" ID="SameControlID"></asp:TextBox>
</asp:Panel>
<asp:Panel runat="server" ID="TestPanel2">
    <asp:TextBox runat="server" ID="SameControlID"></asp:TextBox>
</asp:Panel>

I need controls with the same ID's on the page

你不能。它违反了 HTML 规则。

ID must be document-wide unique.

您可以通过具有相同 class 具有不同 ID 的控件名称来实现的方法之一

             <input type="text" id="id1" class="same" />
             <input type="text" id="id2" class="same" />

您不能在页面上使用相同的控件 ID。即使这些只是 HTML 个具有相同 ID 的 DIV,您也会发生冲突。

如果你想在后面的代码中以一种方式处理代码,请将面板的内容放入一个用户控件中。然后您可以在每个面板中放置一个用户控件。这样你就可以有一套代码来管理控件。

Code sample download.