IsPostBack用法


一、IsPostBack 是Page類有一個bool類型的屬性,用來判斷針對當前Form的請求是第一次還是非第一次,IsPostBack=false時表示是第一次請求,當IsPostBack=true時,表示是非第一次請求。因

為第一次請求的時候會執行Page_Load,在非第一次請求的時候也會執行Page_Load。為什么對同一個Form有多次請求呢?asp.net中引入了服務器端事件,支持服務器端事件的控件,會發出對當前Form的請求,這樣在很多情形下我們就需要區別是否是對這個Form的第一次請求。

 

二、IsPostBack結論

1、對於使用Server.Transfer進行進行遷移時遷移到的頁面其IsPostBack=false 每次刷新頁面都是第一次加載頁面;

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

 

namespace Example
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)   //不是回傳即第一次加載頁面傳過來的值為空
            {
                if (Request.QueryString["id"] != null)
                {
                    Response.Write("回傳");
                }

                else

                {

                        Response.Write("不是回傳");

                 }
            }
        
        }

 

        protected void button1_Click(object sender, EventArgs e)
        {
            Response.Redirect("WebForm1.aspx?id=3 ");
        }
    }
}

3.使用Response.Redirect方式向自畫面遷移時,此時IsPostBack=false

4.發生跨頁提交(CrossPagePostBack),當訪問PreviousPage屬性的時候,對於源Page,IsPostBack=true。發生跨頁提交(CrossPagePostBack)時目標頁面是IsPostBack=false。

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

Server.Execute和Server.Transfer的區別

Server.Execute("another.aspx")和Server.Transfer("another.aspx")區別: 
Execute是從當前頁面轉移到指定頁面,並將執行返回到當前頁面 
Transfer是將執行完全轉移到指定頁面

 

二、解決編輯數據時數據更新的數據原來的,無法修改的問題

解析:因為當后台編輯數據時,先從后台查詢出需要編輯的數據,此時是在不是回傳的情況下從數據庫查詢出數據,當編輯完數據之后,點擊提交按鈕,提交數據,此時如果沒有判斷是否回傳,會再次查詢原來的數據,造成編輯數據沒有改變。

 

namespace Example
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)   //不是回傳即第一次加載頁面傳過來的值為空
            {

 

            }
            if (Request.QueryString["id"] != null)
            {
                Bind();
            }
            else
            {
                Response.Write("<script>alert('數據發生改變')</script>");
            }
         
        }
        public void Bind()
        {
            Response.Write("數據");
        }
        protected void button1_Click(object sender, EventArgs e)
        {
            Response.Redirect("WebForm1.aspx?id=3 ");
            //Server.Execute("WebForm2.aspx?id=3");
        }

 

        protected void CesH_Click(object sender, EventArgs e)
        {
            Label1.Text = "測試";
        }
    }
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM