javascript - MVC5 Ajax.ActionLink 加载新页面而不是替换

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

我知道类似的问题已被多次询问和回答;对于我的一生,我无法确定我缺少什么,请耐心等待。

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

_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 文件夹包含两个文件:

Scripts Folder screenshot showing both files

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"); };

...只是为了看看我是否能让它工作,我从我的 Controller 返回一个简单的字符串:

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 错误。我在所有浏览器上都得到了相同的结果。

我忘记了什么?

最佳答案

原来我只是个白痴:

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

<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 文件的全名是必需的

关于javascript - MVC5 Ajax.ActionLink 加载新页面而不是替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54375828/

相关文章:

javascript - android webview javascript调用缺少的函数

jquery - 在外部单击时隐藏按钮

javascript - 在javascript中组合N个数组值

c# - 为什么我在 ApplicationUser 中的自定义对象属性为空?

javascript - 如何从 typescript 中的嵌套函数中调用函数?

javascript - 如何保存带有循环引用的对象?

javascript - 当 # 已经添加到 url 时,如何使用 javascript 或 jquery 将焦点设置在 div 上?

javascript - 如何在打开另一个弹出窗口时隐藏一个事件的弹出窗口?

c# - 忽略 ASP .Net MVC 5 Identity 中的用户角色

asp.net-mvc - 在 MVC View 上将 EditorFor() 值显示为只读?