2016-02-25 88 views
-1

我有一個DataView可能永遠不會超過2000條記錄。 所以我應該使用會話或ViewState來傳遞它?我必須在一個例程中加載它,並在另一個例程中使用它。但是這些互相呼喚。 當我得到正確答案後,你如何從ViewState或Session中取出它?在視圖狀態或會話中傳遞DataView會更好嗎?

+2

你想在哪裏管理狀態客戶端或服務器端?無論如何,如果你想要的會話變​​量,將從他們點擊和瀏覽器關閉使用會話狀態的那一刻起持續。 ViewState是保存頁面當前狀態的變量,它保存在頁面的一個隱藏字段中(經常使用) – MKMohanty

+0

這是一大堆數據。如果你把它放在ViewState中,你將會終止瀏覽器。如果你把它放在會話中,你會殺死服務器。對於這樣一個大型的數據集,你唯一明智的選擇就是將其寫入數據庫,然後在下一頁中讀出。 –

+0

很多將取決於如何以及這些數據用於什麼。一般來說,你應該避免使用Session&Viewstate。 Web應用程序斷開連接,應該這樣對待。如果您覺得您需要存儲2000條記錄數據表以稍後更新,則可能需要重新考慮您的設計。 – slambeth

回答

0

如果您將使用同一頁面內的信息,我會說,使用ViewState。兩者的區別是:

會話狀態包含與特定會話(通過特定客戶端/瀏覽器/機器)有關的信息與服務器有關的信息。這是一種跟蹤用戶在網站上做什麼的方法......跨越多個頁面......處於Web的無狀態之中。例如特定用戶購物車的內容是會話數據。 Cookie可以用於會話狀態。

Session["UserName"] = "Test"; 

在其他網頁,你可以得到用戶名了會議的有以下代碼:

string UserName = (string)Session["UserName"]; 

視圖狀態,另一方面是針對特定的網頁信息。它存儲在隱藏字段中,以便用戶不可見。它被用來保持用戶的幻覺,即該頁面記得他上次做了什麼 - 每次他回帖時都不要給他一個乾淨的頁面。

ViewState["color"] = "red"; 

string strColor; 
strColor =(string)ViewState["color"];