Html.BeginForm无法正常工作

时间:2015-12-29 23:09:19

标签: c# asp.net-mvc html.beginform

我试图使用MVC的一些功能。在实践中我提出了这个观点:

@using (Html.BeginForm("ResetPasswordToken", "Account", FormMethod.Post, new { rt = @Request.QueryString["rt"] })))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true, "Reset Password non riuscito")
    <div class="container above-footer login-form">
        <div class="col-md-6" align="center" style=" margin-left:25%; margin-top:100px; margin-bottom:100px;">
            <div class="editor-label">
                @Html.LabelFor(m => m.ResetToken)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.ResetToken, new { @Value = @Request.QueryString["rt"] })
                @Html.ValidationMessageFor(m => m.ResetToken)
            </div>

            <div class="editor-label">
                @Html.LabelFor(m => m.NewPassword)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.NewPassword)
                @Html.ValidationMessageFor(m => m.NewPassword)
            </div>

            <div class="editor-label">
                @Html.LabelFor(m => m.ConfirmPassword)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.ConfirmPassword)
                @Html.ValidationMessageFor(m => m.ConfirmPassword)
            </div>

            <p>
                <input type="submit" value="Change Password" />
            </p>
        </div>
    </div>

该视图用于重置密码,当我点击&#34;更改密码&#34;时,我想在AccountController中调用ResetPasswordToken方法。

AccountController是如此结构化,但是当我点击按钮时它不会转到该方法:

[HttpPost]
    public ActionResult ResetPasswordToken()
    {
        return View();
    }


    [HttpPost]
    public ActionResult ResetPasswordToken(RecoverPasswordModel model)
    {
        if (ModelState.IsValid)
        {
            if (WebSecurity.ResetPassword(model.ResetToken, model.NewPassword))
            {
                return RedirectToAction("PasswordResetSuccess");
            }
            else
            {
                ModelState.AddModelError("", "The password reset token is invalid.");
            }
        }
        return View(model);
    }

请有人可以帮助我吗?

非常感谢你,祝你节日愉快

罗伯特

2 个答案:

答案 0 :(得分:1)

您有两个具有相同名称和相同httppost属性的操作。将第一个操作(不带参数)标记为httpget

答案 1 :(得分:0)

确定。它缺少[AllowAnonymus]。太好了,谢谢你。现在有一个问题。在不使用@Html.TextBoxFor(m =&gt; m.ResetToken,new {@Value = @ Request.QueryString [&#34; rt&#34]的情况下,将URL中的标记值传递给控制器​​的最佳方法是什么? ;]})。我想将此值隐藏给用户。