Tek 發表
IsPostBack
ASP.Net: IsPostBack 屬性
平常要判斷一個使用者是否已經讀過一個網頁,都要繞遠路來完成• 但是ASP.Net的Page Class 本身存在一個屬性,叫做"IsPostBack"•
它大部份都會用在Page_Load()的Subroutine裡,因為Page_Load()是你每次進入網頁第一個會被讀的... 而也許你會有這種情況:
你只希望某一部份的程式只在網頁被載入時只讀取一次,但你又卻不想繞遠路來寫這一斷程式碼去判斷• 那麼你可以用IsPostBack屬性來完成•
(請注意是是載入,不是讀取喔!)
IsPostBack 屬性只回傳回布林值(Boolean),沒錯,就是True和False• 如果傳回True, 則代表這一頁已經被載入過了...
相對的,傳回False則代表這是第一次被載入•
也許您還未瞭解Page_Load()是做什麼的? Page_Load() 是一個事件,一個Sub• 他會在你每一次網頁被讀取時必須會被自動執行! 在ASP.Net這佔了很重要的責任!
在先使用IsPostBack, 先瞭解Page_Load()是很重要的! 因為大部份用IsPostBack時都是在Page_Load()裡執行•
一個使用Page_Load() 的範例:
<Script Language="VB" Runat="Server">
Sub Page_Load()
Response.Write("Hello, world!")
End Sub
</Script>
使用IsPostBack屬性:
<Script Language="VB" Runat="Server">
Sub Page_Load()
If Not Page.IsPostBack Then
my_text.Text = "Ready to process the very first time."
Else
Response.Write("Loaded")
End If
End Sub
Sub run(o as object, e as eventargs)
result.Text = my_text.text
End Sub
</Script>
<form runat="Server">
<br>
<asp:Label runat="server" id="result" />
<br>
<asp:textbox runat="server" id="my_text" />
<br>
<asp:button runat="server" text="Submit" onclick="run" />
</form>
您可以執行上面的程式碼,您會注意到你的輸入欄寫著"Ready to process the very first time."
,然後你填入一些字,按下"Submit",讓程式顯示字出來... 那一個"Ready to process the very first
time."就不見了,而且是永遠消失... 為什麼? 反倒之後都出現"Loaded"的字樣,因為網頁已經被載入過啦!
在之後的教學,我將盡量再把IsPostBack 搬出來給大家複習一下啦!