.Net MVC Ajax 和 Scriptmanager 冲突

发布于 2024-09-25 22:24:33 字数 805 浏览 5 评论 0原文

我们有一个运行良好的简单 ajax 链接 (Ajax.ActionLink(...))。最近,另一位开发人员在使用 asp 脚本管理器的同一页面中添加了一些 ajax-ey 代码...现在突然第一个 ajax 链接不再起作用。更具体地说,我们收到错误:“sys.mvc.asynchyperlink' 为 null 或不是对象”。下面是一个示例:

<a id="linkID"
   href="someURL" 
   onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace });">
<img src="linkImage.jpg" />                    
</a>

....

<asp:ScriptManager ID="_someID" EnablePartialRendering="true" ScriptMode="Release" runat="server">
...
</asp:ScriptManager>

这两者之间有什么关系?它们可以共存吗?

编辑: 因此,事实证明我们正在使用 scriptmanager 来注册 ServiceReference 以挂钩到我们已设置的 Web 服务。脚本管理器使我们的 JavaScript 函数可以使用该服务。是否可以在不使用脚本管理器的情况下注册/添加 ServiceReference?这也许是一个完全不同的问题......

We have a simple ajax link (Ajax.ActionLink(...)) that has been working fine. Recently, another developer added some ajax-ey code to the same page that uses an asp scriptmanager ... now suddenly the first ajax link no longer works. More specifically we get the error : "sys.mvc.asynchyperlink' is null or not an object". Below is a sample :

<a id="linkID"
   href="someURL" 
   onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace });">
<img src="linkImage.jpg" />                    
</a>

....

<asp:ScriptManager ID="_someID" EnablePartialRendering="true" ScriptMode="Release" runat="server">
...
</asp:ScriptManager>

What is the relationship between these two? Can they coexist?

EDIT :
so, it turns out we are using the scriptmanager to register a ServiceReference to hook into a web service we've set up. The scriptmanager makes the service available from our javascript functions. Is it possible to get the ServiceReference registered/added without using the scriptmanager? This is perhaps a completely different question...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

So要识趣 2024-10-02 22:24:33

ScriptManager 控件不是为与 ASP.NET MVC 共存而构建的。只需将其删除并替换为以下内容即可:

<script src="MicrosoftAjax.js"><script>

请注意,路径将根据 MicrosoftAjax.js 在项目中的位置而有所不同,但它应该位于任何新 ASP.NET MVC 项目的 Static/js 文件夹中。

The ScriptManager control is not built to coexist with ASP.NET MVC. Just remove it and replace it with the following:

<script src="MicrosoftAjax.js"><script>

Note that the path will vary based on where MicrosoftAjax.js is in your project, but it should be in the Static/js folder in any new ASP.NET MVC project.

下壹個目標 2024-10-02 22:24:33

根据记录,我们最终通过使用 Web 服务代理来绕过使用 Scriptmanager 进行服务引用,如 Stephen Walther 在本教程中所述 http://stephenwalther.com/blog/archive/2008/03/14/using-asp- net-ajax-with-asp-net-mvc.aspx

For the record, we ended up getting around using the Scriptmanager for the service reference by using a web service proxy, as outlined in this tutorial by Stephen Walther http://stephenwalther.com/blog/archive/2008/03/14/using-asp-net-ajax-with-asp-net-mvc.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文