【问题标题】:MVC5 Ajax.ActionLink Loads New Page Instead of ReplacingMVC5 Ajax.ActionLink 加载新页面而不是替换
【发布时间】:2019-06-19 21:52:11
【问题描述】:

我知道类似的问题已被多次询问和回答;对于我的一生,我无法确定我错过了什么,请多多包涵。

我正在尝试使用编辑器为页面上的项目加载部分视图,并将该编辑器显示为引导模式,但它总是加载到新页面。

_Layout.cshtml 引用了 jQuery 包:

@Scripts.Render("~/bundles/jquery")

`BundleConfig.RegisterBundles() 添加 jQuery 和不显眼的 ajax:

bundles.Add(new ScriptBundle("~/bundles/jquery")
    .Include("~/Scripts/jquery-{version}.min.js") // <-- must come first
    .Include("~/Scripts/jquery.unobtrusive-ajax.min"));

Scripts 文件夹包含这两个文件:

View 有一个空的div 和正确的id 来接收内容

<div id="editor"></div>

我因此构造了ActionLink

@Ajax.ActionLink(linkText: "Edit",
    actionName: "GetEditor",
    routeValues: new {id = Model.Id},
    ajaxOptions: new AjaxOptions
    {
        OnSuccess = "showEditor",
        UpdateTargetId = "editor",
        InsertionMode = InsertionMode.Replace,
        HttpMethod = "POST"
    })

我的 JS 函数只是显示模态:

function showEditor() { $("#editor").modal("show"); };

...为了看看我能不能让它工作,我从我的控制器返回一个简单的字符串:

public ActionResult GetEditor(string id) => Content("Success");

编辑 1

在我的 web.config 中,我启用了客户端验证和不显眼的 js:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

编辑 2

我尝试在不使用缓存 (Ctrl+F5) 的情况下进行刷新,结果相同,并且开发工具未显示任何 JavaScript 错误。我在所有浏览器中都得到了相同的结果。

我忘记了什么?

【问题讨论】:

    标签: javascript jquery asp.net-mvc-5 actionlink html.actionlink


    【解决方案1】:

    原来我只是个白痴:

    我尝试手动添加不显眼的验证库:

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

    ...它开始工作了。然后我认为捆绑可能有问题 - 尽管我非常小心地将库保持在正确的顺序....

    bundles.Add(new ScriptBundle("~/bundles/jquery")
      .Include("~/Scripts/jquery-{version}.min.js") 
      .Include("~/Scripts/jquery.unobtrusive-ajax.min"));  // <--- what's missing?
    

    事实证明,需要 javascript 文件的全名

    【讨论】:

      【解决方案2】:

      尝试使用

      Ctrl + F5

      刷新页面并重试。

      对于 Chrome 可能会缓存您捆绑的资源。

      F12查看是否存在JavaScript错误,如果有则修复。

      尝试在您的 C# 操作中返回 PartialView

      【讨论】:

      • Ctrl+F5 刷新没有帮助,并且开发工具中没有错误。还有其他建议吗?
      【解决方案3】:

      你在 web.config 中启用了吗?

      <configuration>
          <appSettings>
              <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
          </appSettings>
      </configuration>
      

      编辑:或通过 HTML Helper 启用它

      HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
      

      【讨论】:

      • 是的,感谢您提醒我检查;我已将其添加到问题中。
      猜你喜欢
      • 1970-01-01
      • 2014-10-08
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2019-03-17
      • 2014-05-02
      相关资源
      最近更新 更多