2010-04-15 26 views
1

如何在PostBack上堅持ASP.Net類?我已經花時間去數據庫,並且在頁面最初加載時用值填充對象,那麼如何在PostBack上以優雅的方式保存這個對象呢?包含自定義對象的頁面會自動發回。如何在ASP.NET 3.5 Web Forms項目中持久化PostBack上的類?

什麼是值得我在ASP.NET 3.5 Web窗體應用程序中使用C#。

+0

有沒有機會在另一個會話中的所有對象數據可以被另一個用戶更改? – R0MANARMY 2010-04-15 15:15:47

回答

2

3.5可能有更好的方法,但在2.0中可以使用viewstate。只需將該對象添加到視圖狀態,並將其作爲隱藏字段自動包含在默認的asp.net表單中。然後在回發中,您可以從視圖狀態中檢索它。

雖然要小心,但您的視圖狀態包含在每頁加載。最終,我會建議從數據庫中再次獲取對象並避免查看狀態。你也可以嘗試類似於memcached來緩存對象服務器端。

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(ViewState["NameOfUser"] != null) 
      NameLabel.Text = ViewState["NameOfUser"].ToString(); 
     else 
      NameLabel.Text = "Not set yet..."; 
    } 

    protected void SubmitForm_Click(object sender, EventArgs e) 
    { 
     ViewState["NameOfUser"] = NameField.Text; 
     NameLabel.Text = NameField.Text; 
    } 

來自實例http://asp.net-tutorials.com/state/viewstate/

0

你可以使用一個會話變量或服務器緩存。視圖狀態的一個限制是對象必須被序列化以存儲它,但會話和服務器緩存可以存儲任何對象。

+0

會話可能需要將對象序列化,具體取決於會話存儲的設置方式。 – 2010-04-15 18:48:28

0

如果物體很小,您可以考慮將其保持爲hidden field(s)。這樣你就不必佔用服務器內存,但是你也避免再次訪問數據庫。

相關問題