为什么没有清除模型值?

Why is the model value not cleared?

我正在开始使用 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 属性清空,但旧值保持不变。我错过了什么?

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

@Model TestModel

在视图顶部的某处但忘记复制到这里?

丹尼尔

我能够在我的本地环境中重现您的问题,您需要做的是在 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);
}