维护Asp.net mvc中的viewstate?

时间:2009-08-16 22:51:23

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

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

亲切的问候

4 个答案:

答案 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类似的方式使用它(作为表单中的隐藏字段)。