使用网页表单的一个主要原因是易于维护视图状态。我想构建一个asp.net mvc应用程序,以便我有什么选择来维护viewstate?
亲切的问候
答案 0 :(得分:9)
ASP.NET MVC不使用传统意义上的ViewState(在网页中存储控件的值)。相反,控件的值将发布到控制器方法。一旦调用了控制器方法,您对这些值的处理取决于您。
ASP.NET MVC将持久保存控件的值,以便您验证它们并(如果需要)将它们往返返回页面进行编辑或更正。如果控件验证,您可以将它们保存到数据库或其他数据存储中,在那里它们可用于后续的GET请求。
答案 1 :(得分:6)
您可以使用MVC3Futures project
在视图中序列化模型来模仿视图状态您所要做的就是序列化模型并在视图中对其进行加密。
@Html.Serialize("Transfer", Model, SerializationMode.EncryptedAndSigned)
在控制器中添加反序列化属性。
public ActionResult Transfer(string id,[Deserialize(SerializationMode.EncryptedAndSigned)]Transfer transfer)
答案 2 :(得分:6)
由于将业务层维护与表示层分开的基本设计,MVC框架不允许通过HTTP保留状态, 但是,Cookies,Serializable类,ViewData和ViewBag是保存MVC状态的好方法。
答案 3 :(得分:0)
如果您想要制作一个向导样式的表单,您可以创建一个Serializable类来保留视图状态:
[Serializable]
public class MyWizard
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}
然后,您可以序列化此类并以与使用ViewState类似的方式使用它(作为表单中的隐藏字段)。