【问题标题】:Any downsides to using ASP.Net AJAX and JQuery together一起使用 ASP.Net AJAX 和 JQuery 的任何缺点
【发布时间】:2010-09-09 01:42:46
【问题描述】:

我们计划使用 jQuery 库来增加我们的客户端 JavaScript 需求。

在尝试同时使用 ASP.Net AJAX 和 jQuery 时是否存在任何重大问题?这两个库似乎都将 $ 用于特殊目的。有没有我们需要注意的冲突?

我们还使用使用 ASP.Net AJAX 的 Telerik 控件。

TIA

【问题讨论】:

    标签: jquery asp.net-ajax


    【解决方案1】:

    我们在一个大型项目中使用 ASP.NET Ajax、jQuery 和 Telerik 组件已经有一段时间了,没有遇到任何问题

    我绝对推荐使用 jQuery

    【讨论】:

      【解决方案2】:

      jQuery 有一个 noConflict() 方法作为核心的一部分,但它要求您使用 jQuery 作为您的命名函数或您选择的其他东西(而不是美元选择器)。但是,我会说该方法通常依赖于“竞争”库的实现。我曾尝试将它用于 Ning 社交网络(使用 Dojo)和 Magento(使用 Prototype),但我无法正确使用 jQuery。这只是我个人的经验,其他人都非常成功。

      http://docs.jquery.com/Core/jQuery.noConflict

      【讨论】:

        【解决方案3】:

        ASP.NET Ajax 的开发人员采取了特定的步骤来确保该库可以与 jQuery 结合使用。

        例如,ATLAS CTP(成为 ASP.NET Atlas 的测试版)曾经有一个 $() 函数,但它被删除并替换为 $get()。

        【讨论】:

        • Errhhh... 他们采取措施确保 ASP.NET AJAX 能够与 prototype 一起工作,因为当时 jQuery 是这个人为Mozilla”——虽然原型为世界上 46% 的主要网站提供了支持...... ;)
        【解决方案4】:

        一个缺点是服务器端控件可能会被重命名,具体取决于它们的容器。例如,您可能有:

        <asp:panel id="panel1" runat="server"></asp:panel>
        

        这可能会在页面上呈现为:

        <div id="ctl00$panel1"></div>
        

        因此,如果您使用$('#panel1') 作为选择器编写 jQuery,它将无法正常工作。解决这个问题的方法是动态生成id,例如:

         Dim js as String = "$('" & panel1.ClientID & "').whatever();"
        

        这会使 javascript 有点不可读,但它确实工作得很好。我使用这种方法在一个大型 Web 应用程序上工作,jQuery 为我们节省了大量时间,更不用说让网站看起来和工作得更好了。

        【讨论】:

        • 对。这是人们需要意识到的。在我们的 Web 应用程序中,我创建了一个基本页面,该页面公开了注册您想要访问客户端的控件 ID 的机制,并且这个 cln 呈现为一个 JS 对象,如 MyId.MYpage.ClientId
        • 在某些情况下,更好的解决方法是使用选择器来查找具有以 [someControlId] 结尾的 id 的控件,如下所示:$("[id$= someControlId]")
        【解决方案5】:

        不管怎样,jQuery 的 $ 函数和 ASP.NET AJAX 的 $ 前缀快捷函数($get、$find、$create 等)之间没有冲突。就像使用变量 f 一样,不会阻止您使用名为 foo 的变量。

        jQuery 和 ASP.NET AJAX 在大多数情况下可以很好地协同工作。在过去的一年中,我唯一一次看到 ASP.NET AJAX 破坏 jQuery 代码是this scenario with jDrawer。不过解决方法还不错。

        【讨论】:

          【解决方案6】:

          我一直在使用 ext,它是另一个带有 .net 的 javascript 框架。它比老式的 HTML 表单控件好用得多

          <input type="text" id="whatever" />
          

          比使用 ASP.net 表单控件。您可能想使用很酷的 javascript 框架表单验证,而不是不太好的内置 .net 验证器,但我想这取决于您的偏好

          如果您确实想继续使用.net控件,请记住标记中生成的ID与您定义的不同,因此如果您想在JS中使用id引用控件:

          <%=MyControlId.ClientID%>
          

          【讨论】:

            【解决方案7】:

            与此问题相关的最新进展:

            Scott Guthrie 在 2008 年 9 月 28 日发布(参见:http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx),Microsoft 实际上将开始使用 Visual Studio 发布 JQuery。 MVC 项目将默认包含该库。 Scott 表示这是在 JQuery 团队的同意和鼓励下完成的。

            查看full details的原帖。

            【讨论】:

            • 看到了那个。这应该可以打消对 ASP.Net AJAX 和 jQuery 互操作性的疑虑
            【解决方案8】:

            显然,Telerik 从第三季度开始,已经开始将 jQuery 添加到他们的一些 RadControls 中。

            我同时使用 jQuery 和 RadControls,但没有时间进一步研究这种纠缠...可以双向摆动....
            我总觉得这需要更多的clusterf ***,但这只是基于对其中一些和一点点的一般经验;-)

            查看 Atanas Korchev 在 Telerik 上关于这个主题的博客:
            http://blogs.telerik.com/AtanasKorchev/Posts/08-11-06/ASP_NET_Ajax_Controls_and_jQuery.aspx

            祝我们所有人好运,MS、jQuery、Telerik、JP Morgan 和 McDonalds 都在我们的桌面上混杂在一起...... ;-)

            【讨论】:

              【解决方案9】:

              我将 jQuery 与 ASP.NET Ajax 一起使用,因为它们都做得很好。我从来没有遇到过将两者一起使用的问题。事实上,我通过使用超级强大的 jQuery 选择器绕过了奇怪的 ASP.NET id mishmash。通过能够选择元素的类和子元素(基本上是 CSS),它非常易于使用。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-06-01
                • 1970-01-01
                • 1970-01-01
                • 2010-11-02
                相关资源
                最近更新 更多