西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)ASP.NET → ASp.NET開發(fā)之IsPostback的原理

ASp.NET開發(fā)之IsPostback的原理

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:西西整理時(shí)間:2012/5/30 11:47:10字體大。A-A+

作者:佚名點(diǎn)擊:49次評(píng)論:2次標(biāo)簽: ASp.NET

  • 類型:源碼相關(guān)大。23KB語言:中文 評(píng)分:5.0
  • 標(biāo)簽:
立即下載

一步一步讓你看明白。。

先說說吧,然后在上代碼。ispostback:就是判斷頁面是首次加載的,還是數(shù)據(jù)回發(fā)(有g(shù)et或者post請(qǐng)求過的)后的頁面。上代碼吧,直觀點(diǎn)。

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("這是回發(fā)后的頁面!"); //點(diǎn)擊button1控件后出現(xiàn)這個(gè)
            }
            else
            {
                Response.Write("這是首次加載的頁面!"); //第一次預(yù)覽出現(xiàn)這個(gè)
            }
        }

2.html頁面

(1)由于是純粹的html頁面,即便點(diǎn)擊提交也無法,回發(fā)數(shù)據(jù),也就是html頁面無法獲取回發(fā)過來的值。所以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("這是回發(fā)后的頁面!");
            }
            else
            {
                Response.Write("這是首次加載的頁面!"); //第一次預(yù)覽出現(xiàn)這個(gè),點(diǎn)擊submit控件后還出現(xiàn)這個(gè)
            }
        }

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

<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("這是回發(fā)后的頁面!"); //點(diǎn)擊submit控件后又出現(xiàn)這個(gè)。
            }
            else
            {
                Response.Write("這是首次加載的頁面!"); //第一次預(yù)覽出現(xiàn)這個(gè)。
            }
        }

小結(jié):其是asp.net頁面中也有一個(gè)隱藏的viewstate字段,通過在頁面上查看源代碼就能看出來,一般為了減少服務(wù)器的壓力,我們通常會(huì)把viewstate禁用掉,那么將不會(huì)用到ispostback判斷是否是數(shù)據(jù)回發(fā)過的頁面,那將每次執(zhí)行以下后臺(tái)代碼,如果是讀取數(shù)據(jù)庫中的數(shù)據(jù),那么也將每次都要讀取一下,這里你可能會(huì)擔(dān)心數(shù)據(jù)庫的壓力過大,這里我們還有另外的解決辦法,而并非使用viewstate,那就是使用緩存技術(shù)解決這里的問題。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(2)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)