这应该只取代UpdateTarget,但它不会,它会取代整个页面,我不明白为什么。正在返回正确的局部视图,但不是替换目标ID,而是替换整个页面。为什么Ajax.ActionLink更新整个页面而不只是UpdateTarget
<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。所以简单的解决方法是将其添加回管束:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
然后按预期都将正常工作。
好的,所以我看了视频,那正是我遇到的问题。但是,它仍然没有解决。从VS 13中的新项目开始,我会按照视频中的步骤进行操作,并确保包含jqueryval。但整个页面仍被替换。在FireFox中,我可以检查脚本标签并查看jqueryval是否已加载以及jquery.validate.unobtrusive.js。所以它没有任何意义。 –
你添加了这些软件包(我编辑了我的答案) – Mitul
我检查了这些软件包没有安装。所以我安装了它们。但是,我仍然得到相同的结果 - 页面被替换,而不是id。 –