淺談ASP.NET的Postback

作者: Artech  來源: 博客園  發布時間: 2009-03-18 15:10  閱讀: 2733 次  推薦: 0   原文鏈接   [收藏]  
 
摘要:說道ASP.NET的Postback,就得說Web Page的生命周期,但是Web Page的生命周期卻不是三言兩語就能夠說得清楚的,所以在這里單純站的編程的角度,撇開Web Page 的生命周期淺談Postback。
[1] 淺談ASP.NET的Postback
[2] 淺談ASP.NET的Postback

說道ASP.NET的Postback,就得說Web Page的生命周期,但是Web Page的生命周期卻不是三言兩語就能夠說得清楚的,所以在這里單純站的編程的角度,撇開Web Page 的生命周期淺談Postback。

我們知道,無論是ASP.NET1.x,2.0,甚至是以后的版本,ASP.NET最終Render到Client端通過瀏覽器瀏覽的都是一樣:一個單純的HTML。Client通過Submit Form的方式將填入Form的數據提交給Server進行處理。我們現在來看看ASP.NET整個Postback程序處理的過程。

首先我們通過一個Sample來看ASP.NET如何處理一個通過Click一個Button引起的Postback。下面是Web Page的HTML:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"
%>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Test Pagetitle>
head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label runat="server" ID="LabelMessage" ForeColor="red">asp:Label>
        div>
        <div>
            <asp:Button runat="server" ID="Button1" Text="Button1" OnClick="Button1_Click" OnComm
and
="Button_Command"     CommandArgument="Button1" />
            <asp:Button runat="server" ID="Button2" Text="Button2" OnClick="Button2_Click" OnComm
and
="Button_Command"    CommandArgument="Button2" UseSubmitBehavior="false" />
            <asp:Button runat="server" ID="Button3" Text="Button3" OnClick="Button3_Click" OnComm
and
="Button_Command"    CommandArgument="Button3" UseSubmitBehavior="false" />
        div>
    form>
body>
html>

很簡單,定義了3個Button,分別注冊了他們的兩個Event:Click和Command。3個Button的Command Event Hander是一樣的:Button_Command,通過指定的CommandArgument來讓Event Handler判斷到底是哪個Button觸發了Command  Event。

下面是Code Behind:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{  

    
protected void Page_Load(object sender, EventArgs e)
    
{
       
    }

    protected void Button1_Click(object sender, EventArgs e)
    
{
        
string message = string.Format("The {0} event of {1} is fired""Click""Button1");
        
this.LabelMessage.Text = message;
    }

    protected void Button2_Click(object sender, EventArgs e)
    
{
        
string message = string.Format("The {0} event of {1} is fired""Click""Button2");
        
this.LabelMessage.Text = message;
    }

    protected void Button3_Click(object sender, EventArgs e)
    
{
        
string message = string.Format("The {0} event of {1} is fired""Click""Button3");
        
this.LabelMessage.Text = message;
    }


    
protected void Button_Command(object sender, CommandEventArgs e)
    
{
        
string message = string.Format("The {0} event of {1} is fired""Command", e.CommandArgu
ment);
        
this.LabelMessage.Text += "" + message;
    }

}

我們來運行這個Page,并Click某個按鈕(比如Button2):


我們通過最上方的Message可以看出,Button2的Click Event和Command先后觸發。

[第1頁][第2頁]
0
0
 
標簽:ASP.NET
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()