这应该只替换 UpdateTarget,但事实并非如此,它替换了整个页面,我不明白为什么。返回正确的部分 View ,但不是替换目标 id,而是替换整个页面。
<div id="magHeader">
<p>this is a test.</p>
@Ajax.ActionLink("Edit", "GetEditor", "Home", new AjaxOptions(){ UpdateTargetId = "magHeader", InsertionMode = InsertionMode.Replace})
</div>
在运行时,链接如下所示:
<a href="/Home/GetEditor" data-ajax-update="#magHeader" data-ajax-mode="replace" data-ajax="true">Edit</a>
我是不是做错了什么?过去曾成功完成此操作,没有出现任何问题。
编辑 此问题的根本原因是,在 VS 2012 中,您只需添加对 JQueryVal 包的引用即可完成此操作。但是,在 2013 年,BundleConfig.cs 发生了更改,因此 JQueryVal 包不再包含 JQuery.Unobtrusive。因此,简单的解决方法是将其添加回 bundle 中:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
然后一切都会按预期工作。
最佳答案
检查您是否正在将 @Scripts.Render("~/bundles/jqueryval")
加载到页面中的某个位置。这可能是因为不显眼的 javascript 文件没有被加载。检查这个video
编辑:
请检查您的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" />
关于jquery - 为什么 Ajax.ActionLink 更新整个页面而不是只更新 UpdateTarget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22616318/