【问题标题】:Use same control ID in different Panels在不同的面板中使用相同的控件 ID
【发布时间】:2015-01-02 16:11:08
【问题描述】:

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

在以下 .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>

UniqueIDs 被证明是不同的,但 不是NamingContainers。

我怎样才能得到类似下面的东西(我需要在页面上具有相同 ID 的控件没有使用单独的数据绑定容器,如 asp:Repeater 或 @ 987654328@.

<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>

【问题讨论】:

  • 为什么要他们拥有相同的ID?我怀疑这是XY Problem
  • 同一个控件有多个 id 没有意义,它也会在 javascript 中产生问题。
  • 您可能会使用ContentPlaceHolder 并将您的面板或其内容包装到其中。但是,正如其他人所说,这是一个非常奇怪的场景。你需要这个做什么?
  • @Devesh,@mason,@Andrei 我不得不将标记复制/粘贴到面板中 4 倍(而不是使用 UserControl,因为我的老板认为这会花费太多时间)所以我结束了asp:Panels 1-4 中控件上的 ID 相同。这工作正常虽然面板包含在单独的asp:Repeaters...显然,如果标记包含在only中,这工作asp:Panels。重命名它们太复杂了,即使是一个好的RegExpert,所以我会尝试使用ContentPlaceHolder,但这真的应该像@SurfThru 建议的那样作为UserControl 完成。

标签: c# asp.net data-binding webforms panel


【解决方案1】:

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

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

Code sample download.

【讨论】:

    【解决方案2】:

    我需要页面上具有相同 ID 的控件

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

    ID must be document-wide unique.

    【讨论】:

      【解决方案3】:

      您可以通过像这样具有不同ID的控件的相同类名来实现的一种方式

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-19
        • 1970-01-01
        • 2012-10-24
        • 2012-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多