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

标签 jquery asp.net-mvc asp.net-mvc-5

这应该只替换 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/

相关文章:

asp.net-mvc - MVC 区域的后备路线

c# - ASP.NET MVC5 自定义身份验证

JQuery Contextmenu - 处理右键单击另一个对象

jquery - 当行分为两列时,Bootstrap 子菜单将宽度设置为 100%

c# - ASP.NET : How do I fetch data from a webserver every few minutes

asp.net - 将 Web 表单转换为 Razor,没有任何错误

javascript - jQuery 单击事件在 Firefox 中根本不起作用

javascript - 从表中删除行后动态 ID 不起作用

c# - 生成的 LINQ 类的动态属性访问

c# - ASP.NET 标识 : get all users in a role