簡體   English   中英

MVC5 Ajax.BeginForm刷新整個頁面

[英]MVC5 Ajax.BeginForm refresh whole page

為什么表單帖子沒有通過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 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文件中

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM