为什么不清除模型值?

时间:2015-01-08 09:15:32

标签: c# asp.net .net asp.net-mvc

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

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

@Model TestModel

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

丹尼尔