默認情況下,Visual Studio 2013新建ASP.NET MVC5項目,不包含jquery.unobtrusive-ajax.js,需要手工添加。
點擊Visual Studio 2013中的“工具”菜單,選擇“庫程序包管理器”,再選擇“管理解決方案的NuGet程序包“,在出現的對話框中聯機搜索jquery.unobtrusive-ajax.js,然后安裝即可。
看上圖中的信息,對應版本是3.2.0,需要jQuery1.8以上版本支持。MVC5中默認包含的jQuery1.10.2,可以滿足條件。
接下來,我們就可以使用AjaxHelper了。
View代碼:
@model MVCLearning.Models.SetPasswordModel @{ ViewBag.Title = "修改密碼"; } <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.10.2.js")"></script> <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script> <script type="text/javascript"> function Show(msg) { alert(msg); } </script> @using (Ajax.BeginForm("Edit", new AjaxOptions(){OnSuccess="Show"})) { @Html.AntiForgeryToken() <br /> <div class="form-horizontal"> @Html.ValidationSummary(true) <div class="form-group"> @Html.LabelFor(model => model.Password, new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.PasswordFor(model => model.Password) @Html.ValidationMessageFor(model => model.Password) </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Save" class="btn btn-default" /> </div> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
別忘了在View中引用腳本:
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.10.2.js")"></script> <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script>
Controller代碼:
[HttpPost] public ActionResult Edit(SetPasswordModel model) { try { string userName=User.Identity.Name; var user= db.User.Where(x => x.UserName == userName).FirstOrDefault(); if(model.Password!=user.Password) { ModelState.AddModelError("","原始密碼錯誤!"); return View(model); } else { user.Password = model.NewPassword;//更新密碼 db.SaveChanges(); return Content("密碼修改成功!"); } //return RedirectToAction("Index","ContactGroup"); } catch { return View(model); } }
也可以在Controller中直接返回JavaScript,代碼如下:
View代碼修改如下:
@using (Ajax.BeginForm("Edit",new AjaxOptions()))
Controller代碼修改如下:
return JavaScript("alert('密碼修改成功!');");