1
我使用viewstate相當多的存儲一些標誌和小數據,需要在回發中保留。 大多數時候,我用它像這樣每個變量的ViewState對一個變量
public partial class testPage : System.Web.UI.Page
{
public string item1 { get { return (string)(ViewState["item1"] ?? default(string)); } set { ViewState["item1"] = value; } }
public string item2 { get { return (string)(ViewState["item2"] ?? default(string)); } set { ViewState["item2"] = value; } }
public string item3 { get { return (string)(ViewState["item3"] ?? default(string)); } set { ViewState["item3"] = value; } }
public bool flag1 { get { return (bool)(ViewState["flag1"] ?? default(bool)); } set { ViewState["flag1"] = value; } }
public bool flag2 { get { return (bool)(ViewState["flag2"] ?? default(bool)); } set { ViewState["flag2"] = value; } }
protected void Page_Load(object sender, EventArgs e)
{
// flag1...
}
}
這是好的,但看起來有點沉重,我不知道該desirialization進程是否只發生一次或每一次我訪問變量。 所以我想可能是這種技術在性能和管理
public partial class testPage : System.Web.UI.Page
{
public PageVeriables Variables { get { return (PageVeriables)(ViewState["Variables"] ?? default(PageVeriables)); } set { ViewState["Variables"] = value; } }
protected void Page_Load(object sender, EventArgs e)
{
//Variables.flag1..
}
}
[Serializable]
public class PageVeriables
{
public string item1 { get; set; }
public string item2 { get; set; }
public string item3 { get; set; }
public bool flag1 { get; set; }
public bool flag2 { get; set; }
}
問題來講是一個好一點是沒有人真正擁有比其他任何好處?
一些想法:序列化和反序列化每個請求發生一次。使用單個對象需要更少的樣板代碼(如您所見)。如果只有很少的變量被設置爲很多,那麼對每個變量使用單獨的ViewState項目可能會導致比單個對象更短的序列化__VIEWSTATE。 –