IsPostBack (1)

來源:互聯網
上載者:User

今天這個問題困擾了我好久,

不知道誰寫的破項目,到處都是bug,好多類封裝了,也不寫個注釋,命名還不怎麼規範,我又不是神仙。

抱怨結束....今天研究了一下IspostBack到底咋回事

我用最白的語言說,IsPostBack,是否第二次回來,預設的IspostBack為true,一般我們在寫程式裡面load裡都會加上

if(!IsPostBack)//說明第一載入頁面時候,進來,第二次就不執行裡面的方法了。

找了一些資料,供自己看:

1         IsPostBack介紹

IsPostBack是Page類有一個bool類型的屬性,用來判斷針對當前Form的請求是第一次還是非第一次請求。當IsPostBack=true時表示非第一次請求,我們稱為PostBack,當IsPostBack=false時表示第一次請求。在asp.net架構內部有很多的情境需要判斷IsPostBack,比如LoadAllState等操作就需要在PostBack的時候進行。對於我們自己使用WebForm進行開發時,經常會在Page_Load中對IsPostBack進行判斷,因為第一次請求的時候會執行Page_Load,在非第一次請求的時候也會執行Page_Load。為什麼對同一個Form有多次請求呢?asp.net中引入了伺服器端事件,支援伺服器端事件的控制項,會發出對當前Form的請求,這樣在很多情形下我們就需要區別是否是對這個Form的第一次請求。

2         IsPostBack結論

本人對.Net的原始碼中相關的處理進行的分析得到如下的結論:

結論①    對於使用Server.Transfer進行遷移時遷移到的頁面其IsPostBack=false。

結論②    Post方式如果Request中沒有請求值,即Request.Form =null則IsPostBack=false;Get方式如果Request中沒有請求值,即Request.QueryString =null則IsPostBack=false。

結論③    如果QueryString或Form雖然有請求值,但是QueryString或Form中的Key沒有“__VIEWSTATE”和“__EVENTTARGET”和“__VIEWSTATEFIELDCOUNT”,並且沒有鍵為“null”,值以“__VIEWSTATE”開頭並且也沒有值為“__EVENTTARGET”的索引值對,則IsPostBack=false。

結論④    使用Response.Redirect方式向自畫面遷移時,此時IsPostBack=false。

結論⑤    發生跨頁提交(CrossPagePostBack),當訪問PreviousPage屬性的時候,對於源Page,IsPostBack=true。

結論⑥    發生跨頁提交(CrossPagePostBack)時目標頁面是IsPostBack=false

結論⑦    使用Server.Execute遷移到的頁面其IsPostBack=false。

結論⑧    在Page運行期間其對應的DLL被更新了並且Page的樹結構發生過變化,這種情況下請求時IsPostBack=false。

可以這樣來理解這些結論:一般情況判斷Request中如果沒有請求值則IsPostBack=false。如果有請求值但是不包括“__VIEWSTATE”等一些特殊的鍵或值,則IsPostBack=false(每次請求後.Net架構會將一些特殊的隱藏欄位“__VIEWSTATE”等返回給用戶端)。還有一些特殊的情形是上面的規則不能正確判斷的需要特殊處理的,這些情形包括Server.Transfer,Response.Redirect,CrossPagePostBack,Server.Execute,發生了頁面元素變化及重新編譯。

一般來說記住上面的結論就可以,如果您有興趣,或者懷疑請繼續看下面的IsPostBack推論過程。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.