存儲ViewState在哪裏?它存儲在服務器還是客戶端?ViewState存儲在哪裏?
我有一個龐大的數據,應該存儲一些過程。我正在使用Session。但是當從一個頁面移動到另一個時,我無法清除會話。所以我想到實現ViewState。但是,當運行大量的數據ViewState拋出錯誤?
我該如何解決這個問題?
存儲ViewState在哪裏?它存儲在服務器還是客戶端?ViewState存儲在哪裏?
我有一個龐大的數據,應該存儲一些過程。我正在使用Session。但是當從一個頁面移動到另一個時,我無法清除會話。所以我想到實現ViewState。但是,當運行大量的數據ViewState拋出錯誤?
我該如何解決這個問題?
Viewstate以自編碼形式存儲在頁面上。您無法直接訪問客戶端的視圖狀態。您需要了解編碼/解碼算法以從客戶端代碼中的此視圖狀態獲取有價值的數據。
您可以使用隱藏變量來存儲將僅用於該頁面的數據。隱藏的變量可以從客戶端和服務器端代碼訪問。
您可以使用緩存或會話來存儲數據表(大數據)。與ViewState相比,它們將具有良好的性能。
緩存是始終使用機器的內存,會話使用什麼樣已被配置:
在Web場會話可以是本地(其中只有親和力設置有效),或遠程(狀態服務器或數據庫或自定義),但緩存始終是本地的。
因此,將DataTable存儲在緩存中會佔用內存,但不會使用序列化。 PS:存儲一個DataSet而不是一個DataTable將幾乎沒有改變。
閱讀http://msdn.microsoft.com/en-us/library/bb386448.aspx和http://weblogs.asp.net/sreejukg/archive/2010/04/06/viewstatemode-in- asp-net-4-0.aspx –
「你不能訪問客戶端的視圖狀態。」事實上,你可以訪問它,因爲它沒有被加密(默認)。但是,它不能更改,因爲它包含一個將由ASP.NET驗證的散列。 – Steven
@Steven,我同意你的意見,即我們可以訪問viewstate,但訪問它們並不會有用,因爲我們將如何從viewstate變量中獲取實際/解碼值。 –
ViewState中不存儲任何一方,它的來回發送服務器,並在每次請求和響應瀏覽器之間,所以它不是把一個龐大的數據量在ViewState中是個好主意。
保存視圖狀態下的大量數據會降低您的網站。 使用查詢字符串從每個頁面上的數據庫獲取新鮮副本,而不是保存上一頁中的全部信息。
視圖狀態信息存儲在隱藏的字段中。 信息在此隱藏字段中的服務器和客戶端之間傳輸。
對於asp.net控件,..默認情況下,.net實現了所有控件的視圖狀態,這就是爲什麼當我們點擊該頁面的按鈕時文本框的值不會丟失。
ViewState被存儲在你告訴它的地方。默認情況下,它位於發送給客戶端的頁面上的隱藏字段中。
ASP.NET can also store ViewState inside the Session,即在服務器上,如果你告訴它。
您最好查看一下ASP.NET緩存,您可能會發現它適合您的需求。 –