一起使用 ASP.Net AJAX 和 JQuery 的任何缺点

Posted

技术标签:

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

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

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

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

TIA

【问题讨论】:

【参考方案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),它非常易于使用。

【讨论】:

以上是关于一起使用 ASP.Net AJAX 和 JQuery 的任何缺点的主要内容,如果未能解决你的问题,请参考以下文章

无法让 select2.js ajax 与 asp.net webform 一起使用

如何将 Microsoft.jQuery.Unobtrusive.Ajax 与 libman(库管理器)asp.net Core 2.1 一起使用?

示例 AJAX 回调到 ASP.NET Core Razor 页面

如何在我的 .NET 3.5 Web 应用程序中安装和使用 ASP.NET AJAX 控件工具包?

带有asp .net核心的防伪令牌jquery ajax

Asp.net Webservice - 使用 jquery AJAX 安全调用 Web 服务