2010-11-08 53 views
0

我讀過的地方,ASP.net的事件是基於視圖狀態的ASPX頁面。提交的控件的值與視圖狀態的值相匹配,如果發現任何差異,則調用相應的事件。是基於視圖狀態的ASP .NET中的事件

但是我的問題是: 「當事件確實基於視圖狀態時,甚至當使用EnableViewState = false禁用視圖狀態時爲什麼會觸發事件。

謝謝, 大師。

+0

任何鏈接到您指的文章? – InSane 2010-11-08 04:07:02

回答

0

如果你真的想了解的ViewState,去通過這篇文章......

http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx

而這一次是官方@ MSDN ... http://msdn.microsoft.com/en-us/library/ms972976.aspx

我能說的是.. 。嘗試通過我剛纔分享的第一個鏈接...並在該文章結尾處,您將獲得所有查詢的答案。我認爲這是關於這個主題的最好的文章。

簡短的回答是......事件總是會在那裏,因爲這就是頁面生命週期應該如何......按特定的順序!而這與視圖狀態是否開啓無關。

0

ViewState只是偶然與ASP.NET事件相關。更好的措施是將提交的控件的值與重新構建頁面後找到的相應控件進行匹配。一個頁面是基於ViewState 的組合來重新構造的,如代碼前面定義的頁面的原始佈局。 (更不用說,可以在你自己的頁面/控件或第三方自定義控件的CreateChildControls虛擬方法內在服務器端創建控件)

至於你的問題,我的猜測是事件正在被解僱因爲觸發事件的控件不是基於狀態的 - 它們是在代碼前面靜態定義的並且始終可用。

相比之下,一些控件在運行中創建的。例如,如果您將RepeaterItemTemplate組合使用,則可以在項目模板中放置一個按鈕。中繼器中的項目依賴於其數據源中的值,而不是代碼前沿。因此,如果您在這種情況下禁用ViewState,您確實會搞砸事件處理。

相關問題