不要忘了Page.IsPostBack

IsPostBack,一個多麼平凡無奇的Page屬性,也就因為如此的平凡無奇,初學者常常會忘記這東西的存在。

          IsPostBack,一個多麼平凡無奇的Page屬性,也就因為如此的平凡無奇,初學者常常會忘記這東西的存在。

 ASP.NET的Web Form在執行Submit的時候﹝例如按下某個Button去改變某個TextBox的內容值﹞,幾乎都會Submit給自己,因此要利用IsPostBack屬性來判別這個Web Form是不是第一次開啟。若是沒有做這個判斷,我們都會常常覺得做出來的結果莫名其妙。
 
舉個簡單的例子:
有一個簡單的Web Form上面只有兩樣控制項TextBox1和Button1,程式碼內容如下:
 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        TextBox1.Text = "1"
    End Sub
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = Val(TextBox1.Text) + 1
    End Sub
 
我們會很期待每次按了Button1,TextBox1的內容就會自動加1,可是在執行後會發現,不論你怎麼用力地按、努力地按,那個TextBox1中的內容除了一開始是1,以後永遠都是2,這是因為你每按一次這個Web Form就會重新執行一次「TextBox1.Text = "1"」,所以就會開始懷疑是電腦失心瘋還是今天它心情不好。
 
但如果我們改一下Page_Load內的程式為:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack Then
            ‘自己Sumit給自己就不要再做初始化的動作
        Else
            TextBox1.Text = "1"
        End If
    End Sub
就會很順利地照著我們想要的方式執行,所以我有個小習慣,只要寫Web Form,幾乎一開頭我就會把 IsPostBack的程序加入。
 當然這篇文章對於習於寫程式的人來說會認為是個基本常識,也可說成「一塊蛋糕」,不過我想對初學者來說,這樣的習慣可以規避許多不必要問題的產生,挫折感可能會少一點。