【问题标题】:.Net MVC Ajax and Scriptmanager conflict.Net MVC Ajax 和 Scriptmanager 冲突
【发布时间】:2011-04-20 01:01:30
【问题描述】:

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

<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>

这两者是什么关系?它们可以共存吗?

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

【问题讨论】:

    标签: .net asp.net-mvc asp.net-mvc-2 asp.net-ajax scriptmanager


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。 MicrosoftAjax.js 已添加到文件中。如上所述,我们使用脚本管理器注册服务引用。我们将不得不想出另一种方法来做到这一点。
    • AFAIK 那是不可能的。 ScriptManager 是生成服务代理所必需的,但它将接管sys 对象并破坏sys.mvc
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-21
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多