在Asp.net mvc维护viewstate?

使用网络表单的一个主要原因是易于维护视图状态。 我想构建一个asp.net mvc应用程序,以便我有什么选择来维护viewstate?

亲切的问候

ASP.NET MVC不使用传统意义上的ViewState(在网页中存储控件的值)。 相反,控件的值将发布到控制器方法。 一旦调用了控制器方法,您对这些值的处理取决于您。

ASP.NET MVC将持久保存控件的值,以便您validation它们并(如果需要)将它们往返往您的页面进行编辑或更正。 如果控件validation,您可以将它们持久保存到数据库或其他数据存储中,在那里它们可用于后续GET请求。

您可以通过使用MVC3Futures项目在视图中序列化模型来模拟视图状态

您所要做的就是序列化模型并在视图中加密它。

@Html.Serialize("Transfer", Model, SerializationMode.EncryptedAndSigned) 

并在控制器中添加反序列化属性。

 public ActionResult Transfer(string id,[Deserialize(SerializationMode.EncryptedAndSigned)]Transfer transfer) 

由于其业务层维护与表示层分离的基本设计,MVC框架不允许通过HTTP保留状态,但Cookie,Serializable类,ViewData和ViewBag是保存MVC中状态的好方法。

如果你想制作一个向导样式的表单,你可以创建一个Serializable类来保留viewstate:

 [Serializable] public class MyWizard { public string Field1 { get; set; } public string Field2 { get; set; } } 

然后,您可以序列化此类并以与使用ViewState类似的方式使用它(作为表单中的隐藏字段)。