ASP.NET中IsPostBack用法詳解
本文針對(duì)ASP.NET中IsPostBack的用法進(jìn)行了詳細(xì)的說(shuō)明,有助于讀者更準(zhǔn)確的掌握ASP.NET中IsPostBack的用法。
一、IsPostBack介紹:
Page.IsPostBack是一個(gè)標(biāo)志:當(dāng)前請(qǐng)求是否第一次打開(kāi)。調(diào)用方法為:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPostBack,它們都等價(jià)。
1)當(dāng)通過(guò)IE的地址欄等方式打開(kāi)一個(gè)URL時(shí)是第一次打開(kāi), 當(dāng)通過(guò)頁(yè)面的提交按鈕或能引起提交的按鈕以POST的方式提交的服務(wù)器時(shí),頁(yè)面就不再是第一次打開(kāi)了。(每點(diǎn)擊一次按鈕,都是一次加載)
2)IsPostBack只有在第一次打開(kāi)的時(shí)候是false,其它時(shí)候都是true
3).Net判斷一個(gè)Page是否第一次打開(kāi)的方法:Request.Form.Count>0
4)每次頁(yè)面Load的時(shí)候,根據(jù)需要把每次都要加載的代碼放在IsPostBack中,只需要加載一次的代碼放在if(!IsPostBack)中。
5)每次用戶回傳服務(wù)器任何信息的時(shí)候,都會(huì)引發(fā)isPostBack屬性用來(lái)判斷此用戶是否曾經(jīng)做過(guò)登陸或者其他事件。
二、關(guān)于IsPostBack的結(jié)論歸納:
對(duì).Net的源代碼中相關(guān)的處理進(jìn)行的分析得到如下的結(jié)論:
1)對(duì)于使用Server.Transfer進(jìn)行遷移時(shí)遷移到的頁(yè)面其IsPostBack=false。
2)Post方式如果Request中沒(méi)有請(qǐng)求值,即Request.Form =null則IsPostBack=false;Get方式如果Request中沒(méi)有請(qǐng)求值,即Request.QueryString =null則IsPostBack=false。
3)如果QueryString或Form雖然有請(qǐng)求值,但是QueryString或Form中的Key沒(méi)“__VIEWSTATE”和“__EVENTTARGET”和“__VIEWSTATEFIELDCOUNT”,并且沒(méi)有鍵為“null”,值以“__VIEWSTATE”開(kāi)頭并且也沒(méi)有值為“__EVENTTARGET”的鍵值對(duì),則IsPostBack=false。
4)使用Response.Redirect方式向自畫面遷移時(shí),此時(shí)IsPostBack=false。
5)發(fā)生跨頁(yè)提交(CrossPagePostBack),當(dāng)訪問(wèn)PreviousPage屬性的時(shí)候,對(duì)于源PageIsPostBack=true。
6)發(fā)生跨頁(yè)提交(CrossPagePostBack)時(shí)目標(biāo)頁(yè)面是IsPostBack=false
7)使用Server.Execute遷移到的頁(yè)面其IsPostBack=false。
8)在Page運(yùn)行期間其對(duì)應(yīng)的DLL被更新了并且Page的樹(shù)結(jié)構(gòu)發(fā)生過(guò)變化,這種情況下請(qǐng)求時(shí)IsPostBack=false。
結(jié)論總結(jié):
一般情況判斷Request中如果沒(méi)有請(qǐng)求值則IsPostBack=false。如果有請(qǐng)求值但是不包括“__VIEWSTATE”等一些特殊的鍵或值,則IsPostBack=false(每次請(qǐng)求后.Net框架會(huì)將一些特殊的隱藏域“__VIEWSTATE”等返回給客戶端)。還有一些特殊的情形是上面的規(guī)則不能正確判斷的需要特殊處理的,這些情形包括Server.Transfer,Response.Redirect,CrossPagePostBack,Server.Execute,發(fā)生了頁(yè)面元素變化及重新編譯。
相關(guān)文章
.NET運(yùn)行界面上,實(shí)現(xiàn)隨意拖動(dòng)控件的方法
.NET運(yùn)行界面上,實(shí)現(xiàn)隨意拖動(dòng)控件的方法,需要的朋友可以參考一下2013-03-03
.Net Core 中選項(xiàng)Options的具體實(shí)現(xiàn)
這篇文章主要介紹了.Net Core 中選項(xiàng)Options的具體實(shí)現(xiàn),文中運(yùn)用大量代碼對(duì)相關(guān)知識(shí)詳細(xì)介紹,感興趣的小伙伴可以參考一下這篇文章,希望對(duì)你有所幫助2021-09-09
ASP.NET調(diào)用javascript腳本的常見(jiàn)方法小結(jié)
ASP.NET本身就提供了多種調(diào)用javascript腳本的方法,本文總結(jié)了六種調(diào)用方法,大家根據(jù)自己的使用習(xí)慣可以選擇相應(yīng)的調(diào)用方式了!2009-12-12
ASP.NET對(duì)HTML頁(yè)面元素進(jìn)行權(quán)限控制(一)
界面每個(gè)元素的權(quán)限也是需要控制的。比如一個(gè)查詢用戶的界面里面有查詢用戶按鈕,添加用戶按鈕,刪除用戶按鈕,不同的角色我們得分配不同的權(quán)限2013-12-12

