程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> IsPostBack原理的介紹

IsPostBack原理的介紹

編輯:ASP.NET基礎

IsPostback的原理
--------------------------------------------------------------------------------

一步一步讓你看明白。。

先說說吧,然後在上代碼。ispostback:就是判斷頁面是首次加載的,還是數據回發(有get或者post請求過的)後的頁面。上代碼吧,直觀點。

--------------------------------------------------------------------------------

1.asp.net頁面

--------------------------------------------------------------------------------
復制代碼 代碼如下:
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </div>
    </form>
</body>

復制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                Response.Write("這是回發後的頁面!"); //點擊button1控件後出現這個
            }
            else
            {
                Response.Write("這是首次加載的頁面!"); //第一次預覽出現這個
            }
        }

2.html頁面
--------------------------------------------------------------------------------

(1)由於是純粹的html頁面,即便點擊提交也無法,回發數據,也就是html頁面無法獲取回發過來的值。所以ispostback為false。

--------------------------------------------------------------------------------
復制代碼 代碼如下:
<form action="WebForm1.aspx" method="post">
<input id="Submit1" type="submit" value="submit" />
</form>

復制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                Response.Write("這是回發後的頁面!");
            }
            else
            {
                Response.Write("這是首次加載的頁面!"); //第一次預覽出現這個,點擊submit控件後還出現這個
            }
        }

(2)這裡加了一個隱藏的viewstate,回發過來的數據存放在viewstate,完成了數據回發,ispostback的值也就為true。如果你疑惑如果下次還想要首次加載的數據怎麼辦,我告訴你,下次讀取數據直接從viewstate中讀取,不用再次發出請求。

--------------------------------------------------------------------------------
復制代碼 代碼如下:
<form action="WebForm1.aspx" method="post">
<input type="hidden" name="__viewstate" />
<input id="Submit1" type="submit" value="submit" />
</form>

復制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                Response.Write("這是回發後的頁面!"); //點擊submit控件後又出現這個。
            }
            else
            {
                Response.Write("這是首次加載的頁面!"); //第一次預覽出現這個。
            }
        }

小結:其是asp.net頁面中也有一個隱藏的viewstate字段,通過在頁面上查看源代碼就能看出來,一般為了減少服務器的壓力,我們通常會把viewstate禁用掉,那麼將不會用到ispostback判斷是否是數據回發過的頁面,那將每次執行以下後台代碼,如果是讀取數據庫中的數據,那麼也將每次都要讀取一下,這裡你可能會擔心數據庫的壓力過大,這裡我們還有另外的解決辦法,而並非使用viewstate,那就是使用緩存技術解決這裡的問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved