【问题标题】:Webforms and jQuery, how to match the ID's?Webforms和jQuery,如何匹配ID?
【发布时间】:2008-11-04 13:13:47
【问题描述】:

我想将 jQuery 与 asp.net webfoms 一起使用。我是否需要一个特殊的工具包让 .net 控件吐出友好的控件 ID?

原因是,我不想编写引用我的 html ID 的 javascript,例如 control_123_asdfcontrol_234。

3.5 版中是否已解决此问题? (我记得读过你必须得到一些特殊的 dll 来使 ID 友好)。

【问题讨论】:

    标签: asp.net jquery web-controls


    【解决方案1】:

    我发现的最简单的方法就是匹配大多数控件的错位 ID 的末尾。 Know 的例外是单选按钮列表和复选框列表 - 你必须对它们有点棘手。

    但如果你的 .aspx 页面中有这个:

    <asp:TextBox ID="txtExample" runat="server" />
    

    然后您的 jQuery 可以轻松找到该控件,即使它被母版页渲染损坏,如下所示:

    $("[id$=txtExample]")
    

    $= 运算符匹配字符串的结尾,名称 mangling 始终位于前面。完成此操作后,您可以像这样获得实际损坏的 ID:

    $("[id$=txtExample]").attr("id")
    

    然后以你认为合适的方式解析它。

    编辑: 这是一种简单的方法,但它可能比仅仅给每个控件一个与其旧 ID 相同的类更影响性能。

    请参阅 Jeff 在另一个 jQuery 优化问题上发布链接的这篇文章:

    jQuery: Performance Analysis of Selectors

    【讨论】:

    • 如果您一开始就使用 WebForms,那么您很可能并不太关心性能之类的事情。
    【解决方案2】:

    您可以使用myControlId = "&lt;%= myControl.ClientID %&gt;"; 输出用于在 Javascript 中引用它的(非友好)id。

    【讨论】:

    • 如果 javascript 在我的 .aspx 页面中是内联的,但我的将是一个单独的 .js 文件,不会被解析。
    • 那么 var controlId = "" 怎么样?
    【解决方案3】:

    有很多方法可以用 jQuery 选择元素。您可以仔细选择标签/类名。
    在 ASP.NET 4.0 之前,我不知道有什么方法可以弄乱 id 本身。当然,您可以随时尝试ASP.NET MVC Framework

    【讨论】:

      【解决方案4】:

      虽然我还没有听说过你所说的那种新的“特殊 dll”,但一种简单的方法是使用

      var myControlId; 
      

      在您单独的 js 文件中,然后将客户端 ID 分配给 aspx/ascx 中的该 var。

      我也讨厌服务器 ID:s... ASP.NET MVC 是解决所有让我对 asp.net 网络表单(Viewstate...等)感到烦恼的事情的解决方案。

      【讨论】:

        【解决方案5】:

        您可以将唯一属性附加到您的控件(我不确定您是否可以在不扩展基本 Web 控件的情况下执行此操作;快速搜索 revealed only this)然后使用“元素 [属性:值]”选择器.

        【讨论】:

          【解决方案6】:

          您还可以在扩展类中覆盖控件的 UniqueName 和/或 ClientID 属性并返回实际 ID。

          MyTextBox : Web.UI.TextBox
          {
              // This modifies the generated 'name' attribute
              override UniqueID { get { return ID; } }
          
              // This modifies the generated 'id' attribute
              override ClientID { get{ return ID; } }
          }
          

          【讨论】:

            【解决方案7】:

            试试$get('myId')。 我认为这是在非 HTML 文档中选择元素的方法。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-10-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多