MVC5 Ajax.BeginForm 刷新整个页面
本文关键字:刷新 Ajax BeginForm MVC5 | 更新日期: 2023-09-27 18:32:40
为什么表单发布不是通过ajax发生,而是重新加载到新页面?
我的.js包括:
<script src="/App/JavaScript/Libraries/jquery-1.11.1-min.js"></script>
<script src="/App/JavaScript/Libraries/jquery.validate.js"></script>
<script src="/App/JavaScript/Libraries/jquery.validate.unobtrusive.js"></script>
我的剃须刀视图:
<div id="login-partial-update">
@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"})
<div class="errormessage">
@Html.ValidationMessageFor(x=>x.Email)
</div>
@Html.PasswordFor(x => x.Password, new {placeholder = "Password"})
<div class="errormessage">
@Html.ValidationMessageFor(x => x.Password)
</div>
}
</div>
我的控制器代码:
[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"包。我发现也不需要"jQuery验证"包。
安装该包并添加脚本引用后,结果将正确返回到目标 DIV。
为了确认,我正在使用: - VS2013 MVC 4.5.1 - jQuery 2.1.3 - Microsoft jQuery 不显眼的 Ajax 3.2.3
在 BundleConfig 中.cs由于混淆,我决定添加一个新捆绑包:
bundles.Add(new ScriptBundle("~/bundles/jqueryunob").Include(
"~/Scripts/jquery.unobtrusive*"));
然后通过在 _Layout.cshtml 中引用它将其应用于所有页面:
@Scripts.Render("~/bundles/jqueryunob")
将此密钥代码添加到 webconfig 文件
<appSettings>
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>