2012-05-08 19 views
0

假設上的Page_Load():Response.Redirect會丟失ViewState?一個網頁(Web窗體),我創建這個控制的

HtmlGenericControl optionBox = new HtmlGenericControl("div"); 
optionBox.Attributes["class"] = "class_1"; 

比,用途會記得使用一個LinkBut​​ton的頁面。從這個按鈕調用的方法,我改變類我以前的div:

protected void cmdCerca_Click(object sender, EventArgs e) 
{ 
    ... 
    div.Attributes.Add("class", "class_2"); 
    ... 
} 

好吧,如果我看的渲染結果,我會看到類的div已被更改。

這意味着,在此頁面的下一次調用(從這種情況下,例如呼叫cmdCerca_2_Click),系統會將該物件從視圖恢復,越來越class_2,不class_1

但是,如果在cmdCerca_Click的末尾,我會調用與Response.Redirect()相同的頁面,這不會發生。似乎視圖將會丟失。

爲什麼?我該如何解決它?

希望問題清楚。

+0

這是預期的行爲。 – leppie

+1

我想盡量避免重定向 –

+0

我需要重定向之前,我需要構建搜索表單的GET查詢字符串。所以在將來,粘貼相同的查詢,我會得到相同的結果...!打算的行爲...爲什麼?有理由嗎? – markzzz

回答

2

您需要在頁面初始化事件中添加控件,而不是加載,以便將它們放入控件樹中。

您必須在每次回發時重新創建此控件?在這種情況下,每次都會設置您的默認班級。

+0

爲什麼Page_Init而不是Page_Load?我錯過了一些嗎? – markzzz

+0

推薦閱讀:http://www.4guysfromrolla.com/articles/092904-1.aspx – Paddy

相關問題