[ASP.net] ViewState生命週期只存活在postback
幾年前在補習班上課,聽老師講ViewState生命週期活在一個頁面,超連結和postback到自己頁面後,ViewState還是存活的
今天就來推翻這套理論
一開始的畫面
三個控制項、一個<a>超連結
C# Code
protected void Page_Load(object sender, EventArgs e)
{
}
//建立ViewState
protected void btn_Go_Click(object sender, EventArgs e)
{
ViewState["Hello"] = "Hello World!!";
}
//讀取ViewState
protected void btn_readViewState_Click(object sender, EventArgs e)
{
btn_readViewState.Text = (string)ViewState["Hello"];
}
//重新導向(Get Method)
protected void btn_Redirect_Click(object sender, EventArgs e)
{
Response.Redirect("~/testShadow.aspx");
}
先建立ViewState後,再讀取ViewState裡的字串
Postback證明ViewState還在
接著回到一開始的畫面
測試超連結Get Method
ViewState經過Get Method後就消失了
這種基本常識還需要PO上來?
其實是想紀錄一下,最近遇到的一個小技巧
如果有開發過填寫表單畫面的話,例如以下
清除重填,一般人可能會習慣寫在Javascript裡的funciton
並用document.getElementById('<%= WebControl1.ClientID %>').value = "";
來做清除文字動作
如果客戶是優柔寡斷型,TextBox一直加加減減
這時如果再用document.getElementById('<%= WebControl1.ClientID %>').value = "";方式的話
就得寫比較多行較辛苦
這時建議直接把「清除重填」弄成ImageButton
然後Click事件
//重新導向到本頁,網頁上TextBox的ViewState都消失
Response.Redirect("自己的頁面.aspx");