MVC5 Ajax.BeginForm刷新整个页面
为什么表单post没有通过ajax发生,而是重新加载到新页面?
我的.js包括:
我的剃刀观点:
@using (Ajax.BeginForm("Login",null, new AjaxOptions { UpdateTargetId = "login-partial-update", HttpMethod = "POST" }, new { id = "js-form-login" })) { @Html.TextBoxFor(x => x.Email, new {placeholder = "Email address"}) @Html.PasswordFor(x => x.Password, new {placeholder = "Password"}) }
我的控制器代码:
[HttpPost] public ActionResult Login(LoginInputModel login) { return PartialView("Widgets/Popups/_LoginInput", login); }
我忘了什么吗?
您必须在视图中包含jquery.unobtrusive-ajax.js
文件才能使Ajax.BeginForm
正常工作。
这真的让我失望,并且在寻找解决方案时 – 99%的回复都集中在以前版本的MVC和/或从未提及所需的NuGet包。 出于某种原因,VS2013在构建默认MVC项目时不包含“Microsoft jQuery Unobtrusive Ajax”包。 我发现也不需要“jQueryvalidation”包。
一旦我安装了该软件包,并添加了脚本引用,结果就会正确返回到目标DIV。
为了确认,我正在使用: – VS2013与MVC 4.5.1 – jQuery 2.1.3 – Microsoft jQuery Unobtrusive Ajax 3.2.3
在BundleConfig.cs中,由于混淆,我决定添加一个新的bundle:
bundles.Add(new ScriptBundle("~/bundles/jqueryunob").Include( "~/Scripts/jquery.unobtrusive*"));
然后通过在_Layout.cshtml中引用它将其应用于所有页面:
@Scripts.Render("~/bundles/jqueryunob")
将此密钥代码添加到webconfig文件中