【问题标题】:Why is Ajax.ActionLink updating entire page instead of just UpdateTarget为什么 Ajax.ActionLink 更新整个页面而不仅仅是 UpdateTarget
【发布时间】:2014-05-02 05:13:50
【问题描述】:

这应该只替换 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*"));

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

【问题讨论】:

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


    【解决方案1】:

    检查您是否在某处将@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" />
    

    【讨论】:

    • 好的,所以我看了视频,这正是我遇到的问题。但是,它仍然没有解决。从 VS 13 中的一个新项目开始,我按照视频中的步骤操作并确保包含 jqueryval。但是整个页面仍然被替换。在 FireFox 中,我可以检查脚本选项卡并查看 jqueryval 以及 jquery.validate.unobtrusive.js 是否已加载。所以没有任何意义。
    • 我检查并没有安装这些软件包。所以我安装了它们。但是,我仍然得到相同的结果 - 页面被替换,而不是 id。
    • 是你的控制器方法的签名 Public PartialViewResult 并返回 PartialView("someview")
    • 请注意,当我使用 Visual Studio 2012 进行相同测试时,它的工作方式与您在视频中显示的完全一样。我只是添加了对 JQueryVal 的引用,效果很好。
    • VS 12/13 的区别在于,在 2013 年的项目中,JqueryVal 包不再包含对 unobtrusive 的引用。所以你必须手动添加它。
    【解决方案2】:

    发生这种情况的主要原因是您的 jquery 脚本文件和 jquery unobtrusive ajax 未包含在主布局或子视图中,恐怕您是缺少它们,在视图中包含 jquery、jquery 不显眼的 ajax 文件,它会像魅力一样工作。

    【讨论】:

      【解决方案3】:

      添加下面的脚本文件参考有效。

      <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-21
        • 2011-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多