我试图使用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);
}
请有人可以帮助我吗?
非常感谢你,祝你节日愉快
罗伯特
答案 0 :(得分:1)
您有两个具有相同名称和相同httppost属性的操作。将第一个操作(不带参数)标记为httpget
答案 1 :(得分:0)
确定。它缺少[AllowAnonymus]。太好了,谢谢你。现在有一个问题。在不使用@Html.TextBoxFor(m =&gt; m.ResetToken,new {@Value = @ Request.QueryString [&#34; rt&#34]的情况下,将URL中的标记值传递给控制器的最佳方法是什么? ;]})。我想将此值隐藏给用户。