【发布时间】:2017-02-11 19:44:43
【问题描述】:
我有一个简单的 TestController 类和 User 模型:
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; }
}
这是我的表格:
据我所知,MVC 是无状态的,它没有视图状态的概念。但是在将数据发布到我的控制器并返回视图后,我的所有数据都在那里。我希望空字段,但它们都填充了发布的数据。我不明白 MVC 是如何知道回发后的值的?
【问题讨论】:
-
当您从
HttpPost返回View时,假设您正在处理错误情况。它会将发布的数据保留在ModelState中,并在页面上重新填写数据,以便用户更正。 -
如果您在发布后想要一个空表单,则在返回视图时包含一个新的用户对象。
-
MVC 将模型传回给控制器,如果将模型传回给视图,则所有数据都会保留。在回发时,您确定模型是否有效,并执行适当的操作。如果您希望向用户返回一个空视图,那么您必须转换一个新模型,或者在将数据返回给视图之前将字段清空。
-
@Omer K - “你必须忘掉你所学的”。我会放弃将其与 ViewState 关联起来。这是简单的请求和回复,您的控制器使用相同的值回复,这与持久性或有状态性不同。
-
奥马尔,我同意臭臭的。数据没有持久化,也没有“视图状态”。数据正在从服务器移动到视图并返回。您期望空字段...作为程序员,您必须清空它们,或者根据手头项目的需要填充它们。
标签: c# asp.net asp.net-mvc asp.net-mvc-5