Mvc在回发后保留值

时间:2016-10-03 19:13:10

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

我有一个简单的TestController类和用户模型:

public class TestController : Controller
{
    public ActionResult TestAction()
    {
        return View();
    }

    [HttpPost]
    public ActionResult TestAction(User user)
    {
        return View();
    }
}

public class User
{
    public int Id { get; set; }

    public string Name { get; set; }

    public int Age { get; set; }
}

这是我的表格:

enter image description here

据我所知,MVC是无状态的,它没有viewstate概念。但是在将数据发布到我的控制器之后以及当我返回视图时,我的所有数据都在那里。我希望空字段,但它们都填充了发布的数据。我无法理解MVC如何知道回发后的值?

2 个答案:

答案 0 :(得分:3)

  

您需要使用 ModelState.Clear()

public class TestController : Controller
{
    public ActionResult TestAction()
    {
        return View();
    }

    [HttpPost]
    public ActionResult TestAction(User user)
    {
        ModelState.Clear()
        return View();
    }
}

答案 1 :(得分:1)

@ stephen.vakil

当您从HttpPost返回视图时,假设您正在处理错误条件。它会将发布的数据保留在ModelState中,并重新填充页面上的数据,以便用户可以更正它。