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的程序加入。
當然這篇文章對於習於寫程式的人來說會認為是個基本常識,也可說成「一塊蛋糕」,不過我想對初學者來說,這樣的習慣可以規避許多不必要問題的產生,挫折感可能會少一點。