为什么Ajax.ActionLink更新整个页面而不仅仅是UpdateTarget

Gre*_*Gum 10 asp.net-mvc jquery asp.net-mvc-5

这应该只替换UpdateTarget,但它没有,它取代了整个页面,我不明白为什么.正在返回正确的局部视图,但它不是替换目标ID,而是替换整个页面.

<div id="magHeader">
        <p>this is a test.</p>
        @Ajax.ActionLink("Edit", "GetEditor", "Home", new AjaxOptions(){ UpdateTargetId = "magHeader", InsertionMode = InsertionMode.Replace})
</div>
Run Code Online (Sandbox Code Playgroud)

在运行时,链接如下所示:

<a href="/Home/GetEditor" data-ajax-update="#magHeader" data-ajax-mode="replace" data-ajax="true">Edit</a>
Run Code Online (Sandbox Code Playgroud)

有什么我做错了吗?在过去成功完成了这项工作,没有任何问题.

编辑 此问题的根本原因是在VS 2012中,您只需要添加对JQueryVal包的引用以使其工作.但是,在2013年,BundleConfig.cs被更改,因此JQueryVal包不再包含JQuery.Unobtrusive.所以简单的解决方法是将它添加回包中:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));
Run Code Online (Sandbox Code Playgroud)

然后一切都会按预期工作.

Mit*_*tul 11

检查您是否@Scripts.Render("~/bundles/jqueryval")在某处加载到您的页面中.这可能是因为不显眼的javascript文件没有被加载.观看视频

编辑:
请检查您的packages.config文件中是否安装了软件包.

<package id="Microsoft.jQuery.Unobtrusive.Ajax" version="3.1.1" targetFramework="net451" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.0.0" targetFramework="net451" />
Run Code Online (Sandbox Code Playgroud)