天天看點

aspx 頁面生命周期

用戶端請求頁面

1、預初始化(onpreinit)

2、初始化(oninit)

3、完成初始化(oninitcomplete)

4、載入viewstate(loadviewstate)

5、處理回送資料(ipostbackdatahandler)

6、page_onpreload—>page_onload

7、回發更改通知(raisepostdatachangedevent)

8、處理回發事件(raisepostbackevent)

9、page_onloadcomplete

10、預呈現(onprerender)

11、完成預呈現(onprerendercomplete)

12、儲存controlstate(savecontrolstate)

13、儲存viewstate(saveviewstate)

14、呈現(render)

15、page_unload

onpreinit:在初始化頁面oninit事件前觸發。在這個階段裡,可以進行定義站點主題(theme)或加載站點個性化所需要的資料資訊等操作。

oninitcomplete:完成初始化頁面oninit事件後觸發。

onpreload:在加載頁面onload事件前觸發。

onloadcomplete:完成頁面加載onload事件後觸發。

onprerendercomplete:在完成預呈現onprerender事件後觸發。這是完成頁面呈現的最後一道關卡,在此之後,頁面将無法再進行任何呈現上的改動。

savecontrolstate:儲存控件狀态controlstate。controlstate是asp.net2.0控件新增的一個屬性,類似viewstate作用,但它們差別在于controlstate用于儲存更加重要的控件狀态資訊,以保證在禁用viewstate的情況下還可以對控件狀态進行讀寫操作。

增加對頁面header的控制:

system.web.ui.page類新增加了header屬性,用于對html頁面頭區域裡資料的操作。通過對header屬性的跟蹤,可以發現,header屬性儲存着一個實作ipageheader接口的對象(該對象有linkedstylesheets、metadata、stylesheet和title四個屬性),實際上正是通過這個對象實作對html頁面頭區域裡資料的操作的。

例如:

<script runat="server">

void page_load(object sender, system.eventargs e)

{

this.header.metadata.add("author", "brooks");

}

</script> 其運作結果為:

<html>

<head> <title>untitled page</title>

<meta name="author" content="brooks" />

</head>定義表單中的預設按鈕:

在asp.net1.0中,我就為了設定表單中的預設按鈕而一籌莫展。幸好asp.net2.0把這個功能補上了,現在可以非常友善的設定表單中的預設按鈕了。

<%@ page language="c#" %>

void button1_click(object sender, system.eventargs e)

this.lb_message.text = "you clicked button1";

</script>

<head runat="server">

<title>untitled page</title>

</head>

<body>

<form runat="server" defaultbutton="button1">

<asp:textbox id="textbox1" runat="server"></asp:textbox>

<asp:button id="button1" runat="server" text="button" onclick="button1_click" />

<asp:label id="lb_message" runat="server"></asp:label>

</form>

</body>

</html> 設定焦點:

現在假設為textbox1控件設定焦點,在asp.net 2.0中可以這樣實作:

this.textbox1.focus(); 或 this.setfocus(this.textbox1); 即可為textbox1控件設定焦點。

如果打算也為表單設定個預設焦點控件,讓光标預設停留在textbox1上:

<form runat="server" defaultfocus="textbox1">

跨頁面資料發送:

如果你需要多個頁面發送資料到同一個表單程式進行處理,或者資料在多個頁面之間傳輸處理的話,你就可以使用asp.net 2.0這個新特性。例如,我打算把default.aspx頁裡textbox1裡的文本資料發送到default2.aspx頁面進行處理:

default.aspx頁:

textbox textbox1 = (textbox)previouspage.findcontrol("textbox1");

this.label1.text = "hi," + textbox1.text + ". this is default2.aspx!";

<html xmlns="http://www.w3.org/1999/xhtml" >

<form id="form1" runat="server">

<asp:label id="label1" runat="server"></asp:label>

</html>

原帖位址:http://blog.csdn.net/zhoufoxcn/archive/2007/09/26/1801205.aspx

繼續閱讀