【问题标题】:How to determine ASP.NET's generated ID's from codebehind?如何从代码隐藏中确定 ASP.NET 生成的 ID?
【发布时间】:2011-01-27 12:07:07
【问题描述】:

在 ASP.NET 中,当您给标签一个 ID 时,它会根据控件层次结构为元素生成一个唯一的 HTML id,即。

<asp:Panel ID="test" runat="server">
    ...
</asp:Panel>
<!-- Becomes... -->
<div id="plc_lt_zoneContent_PagePlaceholder_PagePlaceholder_lt_test_test">
    ...
</div>

有什么方法可以确定代码隐藏文件中生成的 id 吗?我需要生成一些使用 id 的 Javascript。

【问题讨论】:

    标签: asp.net javascript html


    【解决方案1】:

    在 javascript 中执行此操作:

    <script type="text/javascript">
    
      var theID = '<%= test.ClientID %>';
      // theID contains your ID
    
    </script>
    

    更新:我注意到下面有一条评论说ClientId 不起作用。这是ClientID(区分大小写)。这是 ClientID 的文档参考:

    http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientid(VS.71).aspx

    【讨论】:

    • 尝试此操作时出现以下 ASP 错误:错误 CS1061:'System.Web.UI.WebControls.Panel' 不包含 'ClientId' 的定义,并且没有扩展方法 'ClientId' 接受可以找到“System.Web.UI.WebControls.Panel”类型的第一个参数(您是否缺少 using 指令或程序集引用?)
    • 虽然您可能在使用此特定解决方案时遇到错误。他回答的精神似乎确实是一个不错的解决方案。您可以在 prerender 事件之后将客户端 ID 输出到 javascript。
    • 嗯,是的,我什至在问这个问题之前就知道了。问题是如何检索显然似乎不存在的客户端 ID...
    • @Matthew... 我认为它区分大小写:ClientID 不是 ClientId
    • 当然是这样,我错过了这个是愚蠢的。干杯,现在一切正常! :)
    【解决方案2】:

    您可以使用 ClientID 属性,但它只能在 PreRender 事件(或更高版本)中使用。

    ASP.NET 4 将对此进行一些更改,以便您可以获得“可预测的”标识符,但即便如此它也不是万能药。

    【讨论】:

      【解决方案3】:

      或者在 asp.net-element 上使用 ClientIDMode="Static"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-22
        • 1970-01-01
        • 1970-01-01
        • 2010-12-07
        • 1970-01-01
        • 2021-03-28
        相关资源
        最近更新 更多