2011-03-11 75 views
1

在頁面重載我希望保留用戶已經在點擊提交鍵入的值。asp.net的視圖狀態保持得

我擔心viewstates是爲網頁笨重,無論在帶寬和時間的網頁瀏覽器下載頁面。我賤我字節:對

我的問題是,而不是使用服務器控件和這樣我有網頁上的形式做一個讓自身和對ASPX把

<input type="text" id="user_email" name="email" value="<%=Request.Form["email"] %>" /> 

這讓我不使用viewstate。這樣做有沒有潛在的缺點?即使是更多的工作,我的目標始終是爲了更輕鬆的頁面和效率。

在此先感謝

+0

記住:不僅值存儲在視圖狀態! – 2011-03-11 06:27:35

+0

我同意Adreas。請記住,ControlState也存儲在隱藏的VIEWSTATE字段中。使用ASP時。NET Web窗體,我總是從一個自定義的基類中派生我的頁面,這基本上消除了頁面中的所有視圖/控制狀態(並禁用「回發」)。顯然,JS腳本仍在被引用,並且隱藏的字段被呈現給頁面,但它已經比股票網頁表單好很多了。 – FarligOpptreden 2011-03-11 06:30:41

+0

另一個輸入:正在處理隱藏域的視圖狀態和轉移真的是你的瓶頸?否則我不會應付它! – 2011-03-11 07:39:54

回答

1

這可能是大量的工作,如果你想圍繞做這項工作日後可能會咬你。 我建議你禁用頁面上的viewstate或控制的基礎,否則我認爲沒有使用ASP.NET webform的一點,你可能想嘗試看看ASP.NET MVC。

+0

+,沒有比'EnableViewState ='false'更容易! – 2011-03-11 07:38:47

+0

不一定。禁用視圖狀態不會禁用CONTROL STATE,它也會被置入隱藏字段中。本博文簡要介紹瞭如何完全禁用視圖和控制狀態:http://bit.ly/ehGxGn – FarligOpptreden 2011-03-11 09:48:13

0

就可以解決這個使用0字節很少的工作,並在不改變現有代碼發送到客戶端的ViewState的數據:存儲在服務器的文件系統中的ViewState。

瞭解更多關於在這裏:​​https://msdn.microsoft.com/en-us/library/ms972976.aspx

您不必全部閱讀,向下滾動,直到您到達章節指定視圖狀態的哪個位置持續。您只需要繼承頁面中使用的Page類,就可以重寫某些與ViewState相關的方法來更改ViewState行爲。示例代碼位於鏈接中。

提示

  • 你應該definitly使用SSD存儲這類的ViewState的。在Azure服務器上,D:Temp-驅動器針對此類使用進行了優化。

  • 進一步的性能,你可以實現一個primarely使用System.Web.Caching而不是SSD一個的cache機制。但是隻有當內存已滿並且緩存即將被擦除時才寫入SSD。瞭解更多關於緩存這裏下緩存API,使用Cache對象https://msdn.microsoft.com/en-us/library/aa478965.aspx

  • 如果您選擇使用緩存,還應該從緩存每當同一用戶的帖子下一次刪除舊的ViewState。這將顯着消除內存消耗,並可能在大多數情況下消除對SSD的寫入需求。

  • 設置的合理時間內堅持了ViewState的。在大多數頁面上,30分鐘 - 1小時應該足夠了。

請問我是否想要更多的例子。 :)