gpt4 book ai didi

c# - 将变量添加到 HTML.BeginForm 模型中

转载 作者:搜寻专家 更新时间:2023-10-31 22:47:29 25 4
gpt4 key购买 nike

我在保留 GET Controller 和 View 之间的 passwordToken 时遇到问题。我看到 token 已在 GET Controller 中正确传递并添加到模型中,但是一旦 HTML.BeginForm 在 View 中启动,模型就会有一个新实例,并且以前带有 passwordToken 的模型就会丢失。我需要保留 passwordToken 才能使用 WebSecurity.ResetPassword。关于如何做到这一点有什么建议吗?

我的 GET Controller :

    [AllowAnonymous]
public ActionResult PasswordReset(string passwordToken)
{
// Token Validation
var usrID = WebSecurity.GetUserIdFromPasswordResetToken(passwordToken);
var usr = _dbManager.GetUserInformation(usrID);

if (usr == null)
{
//The link you are using is not valid anymore
return RedirectToAction("Error", "Account");
}
else
{
var model = new PasswordReset();
model.PasswordResetToken = passwordToken;
return View(model);
}
}

我的看法:

@model Project.Models.PasswordReset
@{
ViewBag.Title = "Password Reset";
}

<h2>Password Reset</h2>

<div class="form passwordreset-form">


@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()

<div class="input-form">

<div class="inputbox-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="inputbox">
@Html.PasswordFor(m => m.Password)
</div>

<div class="inputbox-label">
@Html.LabelFor(m => m.ConfirmPassword)
</div>
<div class="inputbox">
@Html.PasswordFor(m => m.ConfirmPassword)
</div>

</div>
<div style="float:right;">
<input type="submit" value="Change Password" />
</div>

}

</div>

我的 POST Controller :

    [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult PasswordReset(PasswordReset model)
{
//Attemp to change password
var passwordChangeConfirmation = WebSecurity.ResetPassword(model.PasswordResetToken, model.Password);

//Password has been changed
if(passwordChangeConfirmation == true)
{
return RedirectToAction("Index", "Home");
}
//Password change has failed
else
{
return RedirectToAction("Error", "Account");
}
}

最佳答案

我最终调整了 POST 类以使其工作。

    [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult PasswordReset(PasswordReset model, string passwordToken)
{
//Attemp to change password
model.PasswordResetToken = passwordToken;
var passwordChangeConfirmation = WebSecurity.ResetPassword(model.PasswordResetToken, model.Password);

//Password has been changed
if (passwordChangeConfirmation == true)
{
return RedirectToAction("Index", "Home");
}
//Password change has failed
else
{
return RedirectToAction("Error", "Account");
}
}

关于c# - 将变量添加到 HTML.BeginForm 模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com