【发布时间】:2017-03-13 12:18:11
【问题描述】:
我在我的 .NET MVC 5 应用程序中创建了一个表单,如下所示:
@using (Ajax.BeginForm("ChangePassword", "User", new { area = "UserSettings" }, new
AjaxOptions
{
HttpMethod = "POST",
OnSuccess = "alert('success');" //This will execute once the Ajax call is finished.
}, null))
{
@Html.TextBoxFor(m => m.Password, new { placeholder = "Password", @class = "form-control", @type = "password" })<br />
@Html.ValidationMessageFor(model => model.Password, "", new { @class = "text-danger", @style = "float:right;" })
@Html.TextBoxFor(m => m.PasswordConfirm, new { placeholder = "Confirm password", @class = "form-control", @type = "password" })<br />
@Html.ValidationMessageFor(model => model.PasswordConfirm, "", new { @class = "text-danger", @style = "float:right;" })
<button type="submit" class="btn btn-primary">Change Password</button>
}
这是控制器中的方法:
[HttpPost]
[ActionName("ChangePassword")]
public ActionResult ChangePassword(UserSettings model)
{
using (var ctx = new myContextEntities())
{
var usr = ctx.Users.FirstOrDefault(x => x.Email == User.Identity.Name);
model.FirstName = usr.FirstName;
model.LastName = usr.LastName;
model.Email = usr.Email;
model.Country = usr.Countries.CountryName;
if (ModelState.IsValid)
{
usr.PasswordSalt = Helpers.PasswordHelper.CreateSalt(40);
usr.PasswordHash = Helpers.PasswordHelper.CreatePasswordHash(model.Password, usr.PasswordSalt);
ctx.SaveChanges();
return View("UserSettings",model);
}
return View("UserSettings", model);
}
}
一旦调用完成,页面就会刷新,这不应该发生,但它应该只是显示成功消息......?我在这里做错了什么?
【问题讨论】:
-
确保布局中添加了所需的 js 库
-
@EhsanSajjad 我应该为此选项参考哪些?
-
@EhsanSajjad 我有 jquery,jquery.validate.min.js 和 jquery.validate.unobtrusive.js ...
-
使用 AJAX 表单时,可以选择用结果替换内部表单内容,但这意味着您必须从操作方法返回 PartialView。
标签: javascript jquery ajax asp.net-mvc asp.net-mvc-4