Ajax 表单更改 url



我有一个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");
    }

该表单位于操作索引中,我没有查看更改密码!

提交表格后,我得到:

  • 包含我发送的内容的空白页
  • url 更改为 .../ChangePassword?length=7(之前是/index)

我不知道这个长度参数是从哪里来的。

所以我的问题是如何保持相同的视图并在正确的div 中获得结果?

任何知道参数长度来自哪里的人,我已经有过几次这个问题了。

如果有人遇到有关长度参数的问题(上面的第二个问题),您可以更改方法调用,如下所示:

@using (Ajax.BeginForm("ChangePassword", "Account", new AjaxOptions { HttpMethod = "POST", UpdateTargetId="result" }, new { @class = "form-horizontal", role = "form", id = "changePasswordForm" }))
//to:
@using (Ajax.BeginForm("ChangePassword", "Account", null, new AjaxOptions { HttpMethod = "POST", UpdateTargetId="result" }, new { @class = "form-horizontal", role = "form", id = "changePasswordForm" }))

长度参数/ChangePassword?length=7 将消失。 长度来自控制器名称"帐户"中的字符数。

请确保在标头中包含 ajax javascript 文件。

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>>

你必须使用这样的一些:

return RedirectToAction("ViewName", [new { args } OR model]);

内容结果可用于以纯文本形式返回到操作。此类继承自"ActionResult"抽象类。

相关内容

  • 没有找到相关文章

最新更新