一起使用 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 页面