2013-07-04 56 views
4

我注意到,即使我在應用程序級(<pages enableViewState="false"/>),或在網頁級別(EnableViewState="false"在頁面屬性)禁用ViewState的,你仍然可以找到在網頁源視圖狀態隱藏字段:Web應用完全禁用視圖狀態

 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="NSe2ZpTF4OoGVDqwwtGVO+/liqfw9gUFmsPSD0n169Su3I6VwhG8xgVaSe0iTUfiPp1x0FbW9q47hkfxgDCvxjd2Z9RKo7N+WljNcEezg4Q=" /> 

爲什麼它在這種情況下仍然存在? ASP.net中存儲了什麼?

+0

尋找你自己:-) http://ignatu.co.uk/ViewStateDecoder.aspx(關於它存儲的內容) – davidkonrad

+0

你使用母版頁嗎?這可能是您的按鈕控件的驗證數據,以避免黑客入侵網頁。 – Aristos

+0

@davidkonrad它說:無法解碼視圖狀態。錯誤是:'序列化數據無效。' – Uriil

回答

3

請注意,自Asp.Net 2.0以來,隱藏域不僅存儲ViewState,而且還包含ControlState

控制狀態類似,但與常規視圖狀態無關。無法關閉控制狀態,因此如果需要控制狀態的任何控件位於您的頁面上,則會導致__VIEWSTATE隱藏字段出現在呈現的標記中。

有關控制狀態的更多信息,請參閱this page on MSDN