ASP.NET頁面內置對象
ASP.NET中常用的內置對象及功能說明如下所示:
對 象 名 功 能 說 明
Page 用於操作整個頁面
Response 用於向瀏覽器輸出信息
Request 用於獲取來自瀏覽器的信息
Server 提供服務器端的一些屬性和方法
Application 用於共享多個會話和請求之間的全局信息
Session 用於存儲特定用戶的會話信息
Cookies 用於設置或獲取Cookie信息
一..Page對象
Page對象是由System.Web.UI命名空間中的Page類來實現的。Page對象提供的常用屬性、方法及事件如下所示:
名 稱 功 能 說 明
IsPostBack屬性 獲取一個值,該值表示該頁是否正為響應客戶端回發而加載
IsValid屬性 獲取一個值,該值表示頁面是否通過驗證
Application屬性 為當前 Web 請求獲取 Application 對象。
Request屬性 獲取請求的頁的 HttpRequest 對象
Response屬性 獲取與 Page 關聯的 HttpResponse 對象。該對象使您得以將 HTTP 響應數據發送到客戶端,並包含有關該響應的信息。
Session屬性 獲取 ASP.NET 提供的當前 Session 對象。
Server屬性 獲取 Server 對象,它是HttpServerUtility 類的實例。
DataBind方法 將數據源綁定到被調用的服務器控件及其所有子控件
RegisterClientScriptBlock方法 向頁面發出客戶端腳本塊
Init事件 當服務器控件初始化時發生
Load事件 當服務器控件加載到Page對象中時發生
Unload事件 當服務器控件從內存中卸載時發生
二,Response對象
小實例:

/// <summary> /// 題目:Response方法演練 /// 時間:2012年11月20日9:49:15 /// 描述:對Response輸出字符數組,知道遇到指定字符串停止程序,清除緩存區及跳轉練習 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button1_Click(object sender, EventArgs e) { string[] str = { "王", "口", "月", "北", "凡", "贏" }; Response.Write("字符串數組過濾后結果是:<br/>"); Response.Write("<b>注:由於使用了end終止程序,所以不會實現頁面跳轉.</b><br/>"); for (int i = 0; i < str.Length; i++) { if (str[i] == "凡") { Response.End();//終止程序輸出 } else { Response.Write(str[i]); } } Response.Clear();//清除緩存區 Response.Redirect("WebForm3.aspx"); }
運行:
擴展知識:
Response對象用語輸出數據到客戶端,包括向瀏覽器輸出數據、重定向瀏覽器到另一個URL或向瀏覽器輸出Cookie文件。
其類名為httpResponse
屬性和方法
Write() 向客戶端發送字符串信息
BufferOutPut屬性 是否使用緩存
Clear() 清除緩存
Flush() 強制輸出緩存的所有數據
Redirect() 網頁轉向地址
End() 終止當前頁的運行
WriteFile() 讀取一個文件,並且寫入客戶端輸出流
(實質:打開文件,並且輸出到客戶端。)
1.Response.Write 變量數據或字符串
Response.Write (變量數據或字符串)
<%=…%>
Response.Write("<script language=javascript>alert('歡迎學習ASP.NET')</script>")
Response.Write("<script>window.open('WebForm2.aspx')</script>")
2.Response對象的Redirect方法將客戶端瀏覽器重定向到另外的URL上,即跳轉到另一個網頁。
例如:
Response.Redirect("http://www.163.net/")
3. Response.End() 終止當前頁的運行
4.Response.WriteFile(FileName)
其中:
FileName 指代需向瀏覽器輸出的文件的文件名
三.Request對象
小實例:

/// <summary> /// 題目:Request方法演練 /// 時間:2012年11月20日9:53:52 /// 描述:對Request接受字符串及輸出等相關操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> ///WebForm3.aspx跳轉 protected void Button1_Click(object sender, EventArgs e) { string str="hello"; string name = "jon"; Response.Redirect("WebForm2.aspx?id=" + str+"&name="+name); } //接收頁面:WebForm2.aspx protected void Button2_Click(object sender, EventArgs e) { Response.Write("獲取頁面請求字符串:" + Request.QueryString.ToString() + "<br/>"); Response.Write("獲取頁面參數值:" + Request.QueryString["id"].ToString() + "<br/>"); Response.Write("獲取頁面傳遞參數值:" + Request.Params["name"] + "<br/>"); Response.Write("獲取頁面請求地址" + Request.Path.ToString() + "<br/>"); Response.Write("獲取頁面客戶端IP地址" + Request.UserHostAddress + "<br/>"); Response.Write("獲取頁面客戶端主機名" + Request.UserHostName + "<br/>"); Response.Write("獲取頁面客戶端瀏覽器信息" + Request.Browser.Type.ToString() + "<br/>"); }
擴展知識:
Request對象是由類System.Web.HttpRequest來實現。Request對象常用的屬性和方法如下所示。
名 稱 功 能 說 明
Cookies屬性 獲取客戶端發送的Cookie的集合
Form屬性 獲取表單變量的集合
QueryString屬性 獲取HTTP查詢字符串變量集合
四。 Server對象
小實例:

/// <summary> /// 題目:Server方法演練 /// 時間:2012年11月20日13:08:20 /// 描述:通過調用本頁面,實現對Server傳值的演練 /// </summary> /// 發送登陸頁面:WebForm2.aspx /// <param name="sender"></param> /// <param name="e"></param> protected void Button7_Click(object sender, EventArgs e) { Response.Write("遠程服務器名:" + Server.MachineName + "<br/>"); Response.Write(Server.MapPath("~/WebForm2.aspx") + "<br/>"); string str; str = Server.HtmlEncode("<b>HTML 內容</b></br>"); Response.Write(str + "<br/>"); str = Server.HtmlDecode(str); Response.Write(str + "<br/>"); }
擴展知識:
Server對象提供對服務器上的方法和屬性進行的訪問 .其類名稱是HttpServerUtility.
Server對象的主要屬性有:
MachineName:獲取服務器的計算機名稱。
ScriptTimeout:獲取和設置請求超時(以秒計)。
方法名稱 說明
CreateObject 創建 COM 對象的一個服務器實例。
Execute 執行當前服務器上的另一個aspx頁,執行完該頁后再返回本頁繼續執行
HtmlEncode 對要在瀏覽器中顯示的字符串進行HTML編碼並返回已編碼的字符串。
HtmlDecode 對HTML編碼的字符串進行解碼,並返回已解碼的字符串。
MapPath 返回與 Web 服務器上的指定虛擬路徑相對應的物理文件路徑。
Transfer 終止當前頁的執行,並為當前請求開始執行新頁。
UrlEncode 將代表URL的字符串進行編碼,以便通過 URL 從 Web 服務器到客戶端進行可靠的 HTTP 傳輸。
UrlDecode 對已被編碼的URL字符串進行解碼,並返回已解碼的字符串。
UrlPathEncode 對 URL 字符串的路徑部分進行 URL 編碼,並返回已編碼的字符串。
編碼:
Server.HtmlEncode(“HTML代碼”)
解碼:
Server.HtmlDecode(“已編碼的HTML”)
1.Server對象的MapPath方法將虛擬路徑或相對於當前頁的相對路徑轉化為Web 服務器上的物理文件路徑。
語法:Server.MapPath(“虛擬路徑”)
String FilePath
FilePath = Server.MapPath(“/”)
Response.Write(FilePath)
五。Application對象
小實例:

/// <summary> /// 題目:Application方法演練 /// 時間:2012年11月20日12:59:11 /// 描述:通過記錄網站在線人數的小實例,對Application進行演練 /// </summary> /// WebForm2頁面,統計記錄 /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { lblApplication.Text = "網站在線人數" + Application["userCount"]; } } // WebForm2頁面,注銷Application事件 protected void btnApplication_Click(object sender, EventArgs e) { Session.Abandon(); } /// <summary> /// 題目: /// 時間:2012年11月20日13:02:13 /// 描述:在Global.asac中對Application相應事件設置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> //初始化用戶登陸人數為0 void Application_Start(object sender, EventArgs e) { // 在應用程序啟動時運行的代碼 Application.Lock(); Application["userCount"] = 0; Application.UnLock(); } //用戶數量加1 void Session_Start(object sender, EventArgs e) { // 在新會話啟動時運行的代碼 Application.Lock(); Application["userCount"] = int.Parse(Application["userCount"].ToString()) + 1; Application.UnLock(); } //用戶數量減1 void Session_End(object sender, EventArgs e) { // 在會話結束時運行的代碼。 // 注意: 只有在 Web.config 文件中的 sessionstate 模式設置為 // InProc 時,才會引發 Session_End 事件。如果會話模式設置為 StateServer // 或 SQLServer,則不會引發該事件。 Application.Lock(); Application["userCount"] = int.Parse(Application["userCount"].ToString()) -1; Application.UnLock(); } <!--在system.web中配置,不可少,否則不執行--> <system.web> <sessionState mode="InProc"/> <system.web/>
運行結果:
擴展知識:
Application對象在實際網絡開發中的用途就是記錄整個網絡的信息,如上線人數、在線名單、意見調查和網上選舉等。在給定的應用程序的多有用戶之間共享信息,並在服務器運行期間持久的保存數據。而且Application對象還有控制訪問應用層數據的方法和可用於在應用程序啟動和停止時觸發過程的事件。
1.使用Application對象保存信息
使用Application對象保存信息
Application(“鍵名”) = 值
或
Application(“鍵名”,值)
獲取Application對象信息
變量名 = Application(“鍵名”)
或:變量名 = Application.Item(“鍵名”)
或:變量名 = Application.Get(“鍵名”)
更新Application對象的值
Application.Set(“鍵名”, 值)
刪除一個鍵
Application.Remove(“鍵名”, 值)
刪除所有鍵
Application.RemoveAll()
或Application.Clear()
2.有可能存在多個用戶同時存取同一個Application對象的情況。這樣就有可能出現多個用戶修改同一個Application命名對象,造成數據不一致的問題。
HttpApplicationState 類提供兩種方法 Lock 和 Unlock,以解決對Application對象的訪問同步問題,一次只允許一個線程訪問應用程序狀態變量。
關於鎖定與解鎖
鎖定:Application.Lock()
訪問:Application(“鍵名”) = 值
解鎖:Application.Unlock()
注意:Lock方法和UnLock方法應該成對使用。
可用於網站訪問人數,聊天室等設備
3. 使用Application事件
在ASP.NET 應用程序中可以包含一個特殊的可選文件——Global.asax 文件,也稱作 ASP.NET 應用程序文件,它包含用於響應 ASP.NET或HTTP模塊引發的應用程序級別事件的代碼。
Global.asax 文件提供了7個事件,其中5個應用於Application對象
事件名稱 說明
Application_Start 在應用程序啟動時激發
Application_BeginRequest 在每個請求開始時激發
Application_AuthenticateRequest 嘗試對使用者進行身份驗證時激發
Application_Error 在發生錯誤時激發
Application_End 在應用程序結束時激發
六。Session
小實例:

/// <summary> /// 題目:Session方法演練 /// 時間:2012年11月20日12:52:53 /// 描述:通過一個簡單登陸,實現對Session傳值的演練 /// </summary> /// 發送登陸頁面:WebForm2.aspx /// <param name="sender"></param> /// <param name="e"></param> protected void Button3_Click(object sender, EventArgs e) { string user = usertxt.Text; string pwd = pwdtxt.Text; if (user == "" || pwd == "") { this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用戶名或密碼為空!')<script>"); //Response.Write("<script>alert('用戶名或密碼為空!')<script>"); } else { Session["name"] = user; Response.Redirect("WebForm3.aspx"); } } //接收頁面WebForm3.aspx protected void Button2_Click(object sender, EventArgs e) { if (Session["name"] != null) { lblname.Text = "用戶名:" + Session["name"]; } else { lblname.Text = "用戶名錯誤"; } }
運行結果:
發送頁面:
接收頁面:
擴展知識:
Session即會話,是指一個用戶在一段時間內對某一個站點的一次訪問。
Session對象在.NET中對應HttpSessionState類,表示“會話狀態”,可以保存與當前用戶會話相關的信息。
Session對象用於存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開為止,特定的用戶會話所需要的信息。用戶在應用程序的頁面切換時,Session對象的變量不會被清除。
對於一個Web應用程序而言,所有用戶訪問到的Application對象的內容是完全一樣的;而不同用戶會話訪問到的Session對象的內容則各不相同。 Session可以保存變量,該變量只能供一個用戶使用,也就是說,每一個網頁瀏覽者都有自己的Session對象變量,即Session對象具有唯一性。
(1)將新的項添加到會話狀態中
語法格式為:
Session ("鍵名") = 值
或者
Session.Add( "鍵名" , 值)
(2)按名稱獲取會話狀態中的值
語法格式為:
變量 = Session ("鍵名")
或者
變量 = Session.Item("鍵名")
(3)刪除會話狀態集合中的項
語法格式為:
Session.Remove("鍵名")
(4)清除會話狀態中的所有值
語法格式為:
Session.RemoveAll()
或者
Session.Clear()
(5)取消當前會話
語法格式為:
Session.Abandon()
(6)設置會話狀態的超時期限,以分鍾為單位。
語法格式為:
Session.TimeOut = 數值
Global.asax 文件中有2個事件應用於Session對象
事件名稱 說明
Session_Start 在會話啟動時激發
Session_End 在會話結束時激發
七 Cookie對象
小實例:

/// <summary> /// 題目:Cookies方法演練 /// 時間:2012年11月20日13:11:51 /// 描述:通過寫入ip地址和讀取,以及加密解密操作實現對Cookies傳值的演練 /// </summary> /// 發送登陸頁面:WebForm2.aspx /// <param name="sender"></param> /// <param name="e"></param> //寫入ip地址 protected void Button5_Click(object sender, EventArgs e) { string UserIP = Request.UserHostAddress.ToString(); Response.Cookies["IP"].Value = UserIP; Response.Cookies["IP"].Expires = DateTime.Now.AddDays(1); } //讀取ip地址 protected void Button6_Click(object sender, EventArgs e) { if (Request.Cookies["IP"] != null) { lblcookie.Text = Request.Cookies["IP"].Value; } }
運行結果:
擴展知識:
Cookie就是Web服務器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點在用戶的電腦上保存信息並且隨后再取回它。信息的片斷以‘鍵/值’對的形式存儲。
Cookie是保存在客戶機硬盤上的一個文本文件,可以存儲有關特定客戶端、會話或應用程序的信息,在.NET中對應HttpCookie類。
有兩種類型的Cookie:會話Cookie(Session Cookie)和持久性Cookie。前者是臨時性的,一旦會話狀態結束它將不復存在;后者則具有確定的過期日期,在過期之前Cookie在用戶的計算機上以文本文件的形式存儲。
在服務器上創建並向客戶端輸出Cookie可以利用Response對象實現。
Response對象支持一個名為Cookies的集合,可以將Cookie對象添加到該集合中,從而向客戶端輸出Cookie。
通過Request對象的Cookies集合來訪問Cookie
七 補充:Form表單數據提交到服務器的方式有兩種:Get和Post方式。
<html>
<head>
<title>使用POST傳送數據</title>
</head>
<body>
<form method="post" action="do.aspx">
請輸入您的名字:<input type="text" name="mingzi"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
在do.aspx中將使用Request.Form["mingzi"]來獲取用戶輸入的名字,do.aspx的代碼如下:
private void Page_Load(Object o,EventArgs e)
//頁面加載后即顯示表單數據
{
string strmessage="您的名字為:"; //定義字符串變量並賦初值
strmessage+= Request.Form["mingzi"]; //把表單數據串接到變量
Response.Write(strmessage);//輸出變量
}
QueryString數據集合
可以利用QueryString集合來獲取客戶端通過GET方法傳送的表單數據,如果把form.htm中表單的method屬性值由POST改為GET,則在do.aspx中就需要通過Request.QueryString ["mingzi"]來獲取輸入的名字。因為GET方法傳送數據有一定的限制並且不安全,所以表單一般不使用GET方法。
private void Page_Load(object sender, System.EventArgs e)
{
if(Request.QueryString["mingzi"].ToString()!="")
Response.Write("您的名字是:"+Request.QueryString["mingzi"].ToString());
}