这应该只替换UpdateTarget,但它没有,它取代了整个页面,我不明白为什么。正在返回正确的局部视图,但它不是替换目标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。所以简单的解决方法是将它添加回包中:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
然后一切都会按预期工作。
答案 0 :(得分:11)
检查您是否在某处或之前将@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" />
答案 1 :(得分:3)
这是因为主要布局或子视图中不包含 jquery 脚本文件和 jquery unobtrusive ajax 的主要原因,我担心你是缺少它们,在视图中包含jquery,jquery不显眼的ajax文件,它将像魅力一样工作。
答案 2 :(得分:1)
添加以下脚本文件参考。
UIControlEventEditingChanged