日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET中防止页面多次加载的IsPostBack属性

發布時間:2025/6/15 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET中防止页面多次加载的IsPostBack属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? 查查msdn,上邊有IsPostBack的定義:獲取一個值,該值指示該頁是否正為響應客戶端回發而加載,或者它是否正被首次加載和訪問。如果是為響應客戶端回發而加載該頁,則為?true;否則為?false。

? ? 首先,有個問題,web頁面是如何加載的,客戶端瀏覽器服務器端發送請求,服務器端將請求發送到客戶端,服務器端將釋放客戶端的請求。

第二個問題,為什么要防止頁面多次加載,根據上述的加載過程我們知道,當點擊頁面的提交按鈕后,瀏覽器會重新從服務器加載數據,原來的數據就無效,所以我們只需要用isPostBack的true值即頁面第一次加載,客戶端的的隱藏控件viewstate將會保存客戶端的數據,即不需要重新加載。

例如一個簡單的登陸代碼如下:

[plain]?view plaincopyprint?
  • protected?void?Page_Load(object?sender,?EventArgs?e)??
  • ????{??
  • ?????????
  • ????????this.txtUserName.Text?=?"";??
  • ????????this.txtUserPwd.Text?=?"";??
  • ??????
  • ????????this.btnExit?.Attributes?.Add("onclick","window.close();");??
  • ????}??
  • ??
  • ????protected?void?btnLogin_Click(object?sender,?EventArgs?e)??
  • ????{??
  • ????????if?(this.txtUserName.Text?==?"a"?&&?this.txtUserPwd.Text?==?"a")??
  • ????????{??
  • ????????????this.lblMessage.Text?=?"登錄成功";??
  • ????????}??
  • ????????else?{???
  • ????????????this?.lblMessage?.Text?="登錄失敗";??
  • ????????}??
  • ??
  • ????}??
  • 顯示的界面如下:即第一次輸入錯誤的用戶名和密碼時會提示登陸失敗。

    ? ? ? ? ? ? ? ? ??

    當我重新輸入正確的用戶名和密碼時:頁面還是會提交失敗。

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    原因在于,點擊登錄后系統沒有重新作出回應。

    解決方案:將上述代碼改為:

    [html]?view plaincopyprint?
  • protected?void?Page_Load(object?sender,?EventArgs?e)??
  • ???????{??
  • ??????????if(!Page.IsPostBack?){??
  • ???????????this.txtUserName.Text?=?"";??
  • ???????????this.txtUserPwd.Text?=?"";??
  • ???????????}??
  • ???????????this.btnExit?.Attributes?.Add("onclick","window.close();");??
  • ???????}??
  • ??
  • ???????protected?void?btnLogin_Click(object?sender,?EventArgs?e)??
  • ???????{??
  • ???????????if?(this.txtUserName.Text?==?"a"?&&?this.txtUserPwd.Text?==?"a")??
  • ???????????{??
  • ???????????????this.lblMessage.Text?=?"登錄成功";??
  • ???????????}??
  • ???????????else?{???
  • ???????????????this?.lblMessage?.Text?="登錄失敗";??
  • ???????????}??
  • ??
  • ???????}??
  • 更改后的界面顯示

    ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    ? ? 整理了現階段能看懂的幾種網上總結:

    結論①??? 對于使用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属性的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。