2010-08-31 40 views
0

我在我的拆遷中使用了一個複選框和一個按鈕。在複選框AutoPostBack屬性是假的,我已經如果enableviewstate被禁用,那麼asp:controls值將被存儲在哪裏?

<asp:CheckBox ID="CheckBox1" runat="server" 
     oncheckedchanged="CheckBox1_CheckedChanged" /><asp:Button ID="Button1" runat="server" 
     Text="Button" /> 

代碼隱藏使用checkbox_checkedchanged服務器端事件()現在

protected void CheckBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    Response.Write("checked"); 
} 


protected void Page_Load(object sender, EventArgs e) 
{ 

} 

當我點擊按鈕(在調試模式)首先它去頁面加載和然後CheckBox1_CheckedChanged事件被觸發。

我想explanation.that而不是啓用視圖狀態,爲什麼複選框事件被解僱?

回答

0

製作的AutoPostBack =假只是推遲事件。如果這是真的,那麼回發將發生事件觸發。在您的場景中,無論何時發佈表單,複選框控件都會發現其狀態已更改(來自POST數據)並引發了CheckedChanged事件。

不知道爲什麼你在這裏所討論的視圖狀態。但即使視圖狀態被禁用,您也會看到這種行爲,因爲任何控件都有兩個狀態包--ViewState和ControlState。 ControlState包含關鍵控制信息,這些信息被認爲是其工作所需要的,並且不能被禁用。所以在這種情況下,複選框的先前狀態將被存儲在控制狀態中。

+0

你可以給我一些鏈接,我可以在視圖狀態更加清晰的思路和控制狀態,因爲它真的讓我困惑.... – Subbu 2010-08-31 06:19:01

+0

因此,只有控制者可以訪問(和理會)了ControlState-和建議只將關鍵數據添加到控制狀態。這裏有幾個環節 1)http://www.pluralsight-training.net/community/blogs/fritz/archive/2004/07/01/472.aspx 2)http://msdn.microsoft.com/en- us/library/1whwt1k7.aspx 3)http://stackoverflow.com/questions/381369/asp-net-2-0-control-state-vs-viewstate – VinayC 2010-08-31 06:52:24

相關問題