ASP.NET中防止页面多次加载的IsPostBack属性
? 查查msdn,上邊有IsPostBack的定義:獲取一個值,該值指示該頁是否正為響應客戶端回發而加載,或者它是否正被首次加載和訪問。如果是為響應客戶端回發而加載該頁,則為?true;否則為?false。
? ? 首先,有個問題,web頁面是如何加載的,客戶端瀏覽器服務器端發送請求,服務器端將請求發送到客戶端,服務器端將釋放客戶端的請求。
第二個問題,為什么要防止頁面多次加載,根據上述的加載過程我們知道,當點擊頁面的提交按鈕后,瀏覽器會重新從服務器加載數據,原來的數據就無效,所以我們只需要用isPostBack的true值即頁面第一次加載,客戶端的的隱藏控件viewstate將會保存客戶端的數據,即不需要重新加載。
例如一個簡單的登陸代碼如下:
[plain]?view plaincopyprint?
? ? ? ? ? ? ? ? ??
當我重新輸入正確的用戶名和密碼時:頁面還是會提交失敗。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
原因在于,點擊登錄后系統沒有重新作出回應。
解決方案:將上述代碼改為:
[html]?view plaincopyprint?
? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? 整理了現階段能看懂的幾種網上總結:
結論①??? 對于使用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。
? ? ? ?剛開始接觸asp.net問題百出呀真是!此博客僅供初學者理解。如有錯誤還請指正。
總結
以上是生活随笔為你收集整理的ASP.NET中防止页面多次加载的IsPostBack属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Studio 1.01
- 下一篇: 首次加载和回发