为什么模型值未清除

本文关键字:清除 模型 为什么 | 更新日期: 2023-09-27 18:36:38

我开始使用 Asp.Net MVC。这是我的cshtml:

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-horizontal" }))
{
    @Html.TextBoxFor(m => m.Username, new { @class = "form-control" })
    <input type="submit" value="Submit" />
}

这是我的控制器:

 public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";            
            return View();
        }
        [HttpPost]
        public ActionResult Index(TestModel testModel)
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
            testModel.Username = string.Empty;
            return View(testModel);
        }
    }

正如您在发布表单时所看到的,我正在清除 Username 属性以清空,但旧值保持不变。我错过了什么?

为什么模型值未清除

我能够在我的本地环境中重现您的问题,您需要做的是在 post 方法中使用以下行

ModelState.Clear();

您的方法应如下所示

[HttpPost]
public ActionResult Index(TestModel testModel)
{
    ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
    testModel.Username = string.Empty;
    ModelState.Clear();
    return View(testModel);
}

您似乎没有让视图知道它应该使用哪个模型。你有吗

@Model TestModel

在您视图顶部的某个地方,但忘记在这里复制?

丹尼尔