【发布时间】:2014-02-15 20:11:44
【问题描述】:
我有一个 ajax 表单:
@model Site.Models.ChangeModel
@using (Ajax.BeginForm("ChangePassword", "Account", new AjaxOptions { HttpMethod = "POST", UpdateTargetId="result" }, new { @class = "form-horizontal", role = "form", id = "changePasswordForm" }))
{
<div id="result"></div>
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, Base.ChangesNotSubmitted, new { @class = "alert alert-danger" })
@Html.EditorFor(m => m.ChangePasswordModel.OldPassword)
@Html.EditorFor(m => m.ChangePasswordModel.Password)
@Html.EditorFor(m => m.ChangePasswordModel.ConfirmPassword)
<div class="form-group">
<div class="col-sm-offset-6 col-sm-2">
<button type="submit" class="btn btn-primary">@Base.ChangePassword</button>
</div>
</div>
}
通过此操作
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ChangePassword(ChangePasswordModel model)
{
bool changed=false;
if (ModelState.IsValid)
{
var result = UserManager.ChangePassword(User.Identity.GetUserId(), model.OldPassword, model.Password);
if (result.Succeeded)
{
changed = true;
}
}
return Content("changed");
}
表单位于操作索引中,我没有更改密码的视图!
提交表单后我得到:
- 包含我已发送内容的空白页
- 网址已更改为 .../ChangePassword?length=7(之前为 /index)
我不知道这个长度参数是从哪里来的。
所以我的问题是如何保持相同的视图并在正确的 div 中获得结果?
任何人知道参数长度的来源,我已经遇到过几次这个问题了。
【问题讨论】:
-
您是否引用了所有必要的脚本?我看到的
Ajax.BeginForm()最常见的问题是没有引用所有脚本或以错误的顺序引用它们。
标签: ajax asp.net-mvc-4 ajaxform