2013-03-30 75 views
1

我開發了一個服務器控件,它繼承自CompositeDataBoundControlINamingContainer。它有2個文本框和1個小圖片。如何減少服務器控件的視圖狀態大小?

但在GridView中呈現時,其ViewState大小最多爲500個字節。它也有大約20個屬性,但我沒有在這裏使用ViewState。

我只使用get;set;,並在回發時再次綁定它。

現在我想知道如何減少這個ViewState的大小以及如何檢查這個ViewState。如果我可以檢查ViewState的值,那麼解決問題將會很有幫助。

+0

順便說一句,它不只是CompositeControl。它是CompositeDataBoundControl。 –

回答

1

將ViewState粘貼到base-64 decoder中。我總是發現看到什麼佔據了空間。

請記住,ViewState字段也包含ControlState

它有2個文本框和1個小圖像。

由於在HTTP請求中持續存在,一些控件可以在沒有ViewState的情況下運行良好。 A TextBox是顯式禁用ViewState的理想選擇,因爲它的值始終會作爲請求的一部分回傳給服務器。

除非計算URL需要處理時間(例如數據庫調用與靜態分配),否則圖像也是禁用ViewState的理想選擇。

但在GridView的渲染時...

一個GridView幾乎可以肯定增加了ViewState的本身。你是否解釋了這個問題?

+0

Thx,Tim。這非常有幫助。 –

0

你可以用

this.EnableViewState = false; 

禁用ViewState的你也可以檢查此鏈接Disable View State for a Page從頁面禁用視圖狀態。

如果您希望檢查視圖狀態,可以使用ASP.NET ViewState Helper或Fiddler等工具來分析視圖狀態。

+1

Thx,hagensoft。但我是服務器控件開發人員,我無法告訴所有開發人員禁用viewstate。我的觀點是,減少視圖尺寸的提示是什麼,而不是關閉它。 –

+0

以下是一些可能幫助您減少視圖大小的策略。 http://stackoverflow.com/questions/1944218/strategies-for-reducing-viewstate-size-in-asp-net – hagensoft