ASP.NET MVC 在每个帖子上将 int 重置为 0

问题描述 投票:0回答:1

我有,我感觉至少是一个非常简单的忘记密码页面。 我的想法是保留一个整数并对整数进行计数,如果达到阈值,则模型失败。我不明白的是为什么我的 int 在每个帖子上都会变回 0。

这是我的控制器方法:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ForgetPassword(Models.Portal.ForgetPasswordModel forgetPasswordModel)
{
    if (ModelState.IsValid)
    {
        forgetPasswordModel.isEmail = Helper.Validation.IsValiEmailAddress(forgetPasswordModel.AccountName);
        forgetPasswordModel.ForgetAttempt = forgetPasswordModel.ForgetAttempt + 1;

        if (forgetPasswordModel.ForgetPasswordReset == Models.Portal.ForgetPasswordReset.Success)
        {
            return RedirectToAction("ResetPassword", "Portal", new Models.Portal.ResetPasswordModel());
        }
        else
        {
            ViewBag.ShowForgetPasswordError = true;
        }
    }

    return View(forgetPasswordModel);
}

这是我的看法

@model AuthFrameworkMVCSite.Models.Portal.ForgetPasswordModel
@{
    ViewBag.Title = "View";
    Layout = "~/Views/Shared/_LayoutAuthFramework.cshtml";
}

@using (Html.BeginForm("ForgetPassword", "Portal", FormMethod.Post))
{
    @Html.AntiForgeryToken()
    <h2>Username/Email Address</h2>
    @Html.TextBoxFor(m => m.AccountName)
    <br />
    <br />
    <input type="submit" value="Reset Password" />
    if (ViewBag.ShowForgetPasswordError == true)
    {
        <div class="col-lg-offset-3 col-lg-6">
            Something went wrong.  Please try again.
        </div>
    }
}
<div id="loader" style="display:none">
    Loading...
</div>

这是我的模型:

public class ForgetPasswordModel
{
    [Required]
    public string AccountName { get; set; }
    public bool isEmail { get; set; }
    public ForgetPasswordReset ForgetPasswordReset { get; set; }

    [Range(0, 5)]
    public int ForgetAttempt { get; set; }
}

public enum ForgetPasswordReset
{
    Failure,
    Success
}

如有任何帮助,我们将不胜感激。我在增加值后传回模型。

asp.net-mvc
1个回答
0
投票

向页面添加

@Html.HiddenFor(model => model.ForgotAttempt)

使用 MVC 时,一个重要因素是“模型”被发送到视图引擎以组成发送到浏览器的 HTML。它不会转到浏览器。当您使用表单 POST 格式化从浏览器返回控制器的调用时。发送回的内容是从页面中的输入控件解析的内容。发送回的是请求正文中的基本名称-值数据,MVC 将其填充到任何类声明中,或者它在请求的方法中找到的参数中。如果 POST 数据不包含对象或参数中每个属性的值,则这些值将保留为默认值。

© www.soinside.com 2019 - 2024. All rights reserved.