使用ASP.Net AJAX和JQuery有什么不足之处?

12
我们计划使用jQuery库来增强客户端JavaScript需求。
尝试同时使用ASP.Net AJAX和jQuery是否存在任何主要问题?两个库似乎都将$用于特殊目的。我们需要注意哪些冲突吗?
我们还使用使用ASP.Net AJAX的Telerik控件。
谢谢。
9个回答

9
我们在一个大型项目中长期使用ASP.NET Ajax、jQuery和Telerik组件,没有遇到任何问题。我强烈推荐使用jQuery。

5

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的beta版)曾经有一个$()函数,但已被删除并替换为$get()。

呃...他们采取了措施确保ASP.NET AJAX与prototype兼容,实际上因为当时jQuery是一个由Mozilla工作人员进行的“不起眼的业余项目”,而prototype却占据了全球所有主要网站46%的份额... ;) - Thomas Hansen

2

一个缺点是服务器端控件可能会根据它们的容器而被重命名。例如,您可能有:

<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。 - rams
在某些情况下,更好的方法是使用选择器来查找以 id 结尾为 [someControlId] 的控件,就像这样:$("[id$=someControlId]")。 - MGOwen

2
“就它的价值而言,jQuery的$函数和ASP.NET AJAX的以$为前缀的快捷函数($get、$find、$create等)之间不存在冲突。这就像使用变量f不会阻止您使用名为foo的变量一样。”
“在大多数情况下,jQuery和ASP.NET AJAX可以很好地协作。在过去的一年中,我只看到过ASP.NET AJAX破坏jQuery代码的情况是这个this scenario with jDrawer。不过解决方法也不错。”

1

我一直在使用ext,这是另一个与.net相关的javascript框架。它比老式的HTML表单控件更容易使用。

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

与使用ASP.net表单控件相比,您可能希望使用酷炫的JavaScript框架表单验证,而不是不太好用的内置.NET验证器,但我想这取决于您的个人喜好。

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

<%=MyControlId.ClientID%>

1

显然,Telerik已经开始在一些RadControls中添加jQuery,从Q3版本开始。

我同时使用jQuery和RadControls,但还没有时间进一步研究这个纠缠不清的问题...可能两者都有好处....
我有一种不祥的预感,这可能涉及更多的混乱,但这只是基于一般经验和一点点那个的经验;-)

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

当微软、jQuery、Telerik、JP Morgan和麦当劳在我们的桌面上混合和混杂时,祝我们所有人好运... ;-)


1

看到了这个。这应该消除任何关于ASP.Net AJAX和jQuery互操作性的疑虑。 - rams

1

我曾经将jQuery与ASP.NET Ajax一起使用,因为它们各自擅长不同的事情。我从未在同时使用这两个工具时遇到过任何问题。事实上,我通过使用超强大的jQuery选择器来解决了ASP.NET id混乱的问题。通过能够选择元素的类和子元素(基本上是CSS),这使得使用变得非常容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接