编程语言
首页 > 编程语言> > javascript-MVC5 Ajax.ActionLink加载新页面而不是替换

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

作者:互联网

我知道类似的问题已经被问过多次了.对于我的一生,我无法确定自己所缺少的,请忍受.

我正在尝试使用页面上某个项目的编辑器加载部分视图,并将该编辑器显示为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

该视图具有一个具有正确ID的空div以接收内容

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

我忘记了什么?

解决方法:

原来我只是个白痴:

我试图手动添加不引人注目的验证库:

<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文件的全名.

标签:asp-net-mvc-5,actionlink,html-actionlink,javascript,jquery
来源: https://codeday.me/bug/20191211/2106679.html