[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");