Reputation: 10174
I have a simple TestController class and User model:
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; }
}
This is my form:
As far as I know MVC is stateless and it does not have a viewstate concept. But after posting the data to my controller and when I return the view, all my data is there. I expect empty fields but they are all filled with the posted data. I could not understand how MVC knows the values after postback?
Upvotes: 3
Views: 8864
Reputation: 10174
@stephen.vakil
When you return a View from an HttpPost the assumption is that you are handling an error condition. It will keep the posted data in the ModelState and re-fill the data on the page so that the user can correct it.
Upvotes: 1
Reputation: 411
You Need to use ModelState.Clear()
public class TestController : Controller
{
public ActionResult TestAction()
{
return View();
}
[HttpPost]
public ActionResult TestAction(User user)
{
ModelState.Clear()
return View();
}
}
Upvotes: 4