【问题标题】:Determining ASP.NET client ids确定 ASP.NET 客户端 ID
【发布时间】:2009-03-09 10:41:39
【问题描述】:

这个问题类似于Forcing client ids in ASP.NET,但不完全一样。

ASP.NET 根据自己的内部机制生成客户端 ID。我想在后台运行一个 xmlhttprequest 查询来进行更新并有选择地重新加载一些控件。我的计划是在后台运行查询并重新生成页面,但仅选择性地呈现我想要更新的控件 - 然后只需将这些控件的 html 替换为新控件。

我的问题是,我能否期望客户端 ID 相同(因为我正在生成相同的页面),如果我想通过更新 asp.net 生成的 html,还有什么需要注意的吗? javascript?

【问题讨论】:

    标签: asp.net javascript


    【解决方案1】:

    ASP.NET 根据控件在页面层次结构中的位置生成控件名称和 ID。

    如果此层次结构不会在连续的页面重新生成之间发生变化,那么您可以确定生成的控件 ID 不会不同。另一个值得注意的点是,当您使用 Fragment 缓存时,控件 ID 在每个请求上都有随机名称。

    另一个想法是将 ClientID(服务器端可用)存储到隐藏字段中,然后通过脚本检索此信息。

    【讨论】:

      【解决方案2】:

      虽然系统是可预测的,但不建议在生成这些名称时建立对它们的依赖关系,因为它们会产生难以维护的负担,并且可能会出现一些细微的错误当您的页面发生变化时,它们会发生变化

      这都是使用 asp.net 的问题的一部分,我建议你找到一种更可靠的方法来定位节点,比如定位非 asp 包装器节点,然后查看子节点,或者定位类名。

      【讨论】:

        【解决方案3】:

        我使用以下技巧来获取 ASP.NET 控件的 ClientID:

        <script type="text/javascript">
        //textBox will contain the DOM element rendered for the <asp:TextBox /> control
        var textBox = document.getElementById("<%= nameTextBox.ClientID %>");
        </script>
        <asp:TextBox runat="server" ID="TextBox1" />
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-05
          • 2023-03-14
          • 2010-11-10
          • 1970-01-01
          • 2011-12-03
          • 1970-01-01
          相关资源
          最近更新 更多