- ASP.NET 教程
- ASP.NET - 首頁
- ASP.NET - 簡介
- ASP.NET - 環境
- ASP.NET - 生命週期
- ASP.NET - 第一個示例
- ASP.NET - 事件處理
- ASP.NET - 伺服器端
- ASP.NET - 伺服器控制元件
- ASP.NET - HTML 伺服器控制元件
- ASP.NET - 客戶端
- ASP.NET - 基本控制元件
- ASP.NET - 指令
- ASP.NET - 狀態管理
- ASP.NET - 驗證器
- ASP.NET - 資料庫訪問
- ASP.NET - ADO.NET
- ASP.NET - 檔案上傳
- ASP.NET - 廣告輪播
- ASP.NET - 日曆控制元件
- ASP.NET - 多檢視
- ASP.NET - 面板控制元件
- ASP.NET - AJAX 控制元件
- ASP.NET - 資料來源
- ASP.NET - 資料繫結
- ASP.NET - 自定義控制元件
- ASP.NET - 個性化設定
- ASP.NET - 錯誤處理
- ASP.NET - 除錯
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 資料快取
- ASP.NET - Web 服務
- ASP.NET - 多執行緒
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 資源
- ASP.NET - 快速指南
- ASP.NET - 有用資源
- ASP.NET - 討論
ASP.NET - 伺服器端
我們已經學習了頁面生命週期以及頁面如何包含各種控制元件。頁面本身作為控制元件物件例項化。所有 Web 窗體基本上都是 ASP.NET Page 類的例項。Page 類具有以下極其有用的屬性,這些屬性對應於內在物件
- 會話 (Session)
- 應用程式 (Application)
- 快取 (Cache)
- 請求 (Request)
- 響應 (Response)
- 伺服器 (Server)
- 使用者 (User)
- 跟蹤 (Trace)
我們將適時討論這些物件中的每一個。在本教程中,我們將探討 Server 物件、Request 物件和 Response 物件。
Server 物件
Asp.NET 中的 Server 物件是 System.Web.HttpServerUtility 類的例項。HttpServerUtility 類提供許多屬性和方法來執行各種任務。
Server 物件的屬性和方法
HttpServerUtility 類的屬性和方法透過 ASP.NET 提供的內在 Server 物件公開。
下表列出了這些屬性
| 屬性 | 描述 |
|---|---|
| MachineName | 伺服器計算機的名稱 |
| ScriptTimeOut | 獲取和設定請求超時值(以秒為單位)。 |
下表列出了一些重要的方法
| 方法 | 描述 |
|---|---|
| CreateObject(String) | 建立由其 ProgID(程式化 ID)標識的 COM 物件的例項。 |
| CreateObject(Type) | 建立由其 Type 標識的 COM 物件的例項。 |
| Equals(Object) | 確定指定的 Object 是否等於當前 Object。 |
| Execute(String) | 在當前請求的上下文中執行指定虛擬路徑的處理程式。 |
| Execute(String, Boolean) | 在當前請求的上下文中執行指定虛擬路徑的處理程式,並指定是否清除 QueryString 和 Form 集合。 |
| GetLastError | 返回之前的異常。 |
| GetType | 獲取當前例項的 Type。 |
| HtmlEncode | 將普通字串更改為具有合法 HTML 字元的字串。 |
| HtmlDecode | 將 HTML 字串轉換為普通字串。 |
| ToString | 返回表示當前 Object 的 String。 |
| Transfer(String) | 對於當前請求,終止當前頁面的執行,並使用頁面的指定 URL 路徑開始新頁面的執行。 |
| UrlDecode | 將 URL 字串轉換為普通字串。 |
| UrlEncodeToken | 與 UrlEncode 的作用相同,但在包含 Base64 編碼資料的位元組陣列上操作。 |
| UrlDecodeToken | 與 UrlDecode 的作用相同,但在包含 Base64 編碼資料的位元組陣列上操作。 |
| MapPath | 返回對應於伺服器上指定的虛擬檔案路徑的物理路徑。 |
| Transfer | 將執行轉移到當前應用程式中的另一個網頁。 |
Request 物件
Request 物件是 System.Web.HttpRequest 類的例項。它表示使頁面載入到瀏覽器中的 HTTP 請求的值和屬性。
此物件提供的資訊由更高級別的抽象(Web 控制元件模型)包裝。但是,此物件有助於檢查某些資訊,例如客戶端瀏覽器和 Cookie。
Request 物件的屬性和方法
下表列出了一些值得注意的 Request 物件屬性
| 屬性 | 描述 |
|---|---|
| AcceptTypes | 獲取客戶端支援的 MIME 接受型別的字串陣列。 |
| ApplicationPath | 獲取伺服器上 ASP.NET 應用程式的虛擬應用程式根路徑。 |
| Browser | 獲取或設定有關請求客戶端瀏覽器功能的資訊。 |
| ContentEncoding | 獲取或設定實體主體的字元集。 |
| ContentLength | 指定客戶端傳送的內容長度(以位元組為單位)。 |
| ContentType | 獲取或設定傳入請求的 MIME 內容型別。 |
| Cookies | 獲取客戶端傳送的 Cookie 集合。 |
| FilePath | 獲取當前請求的虛擬路徑。 |
| Files | 獲取客戶端以多部分 MIME 格式上傳的檔案集合。 |
| Form | 獲取窗體變數集合。 |
| Headers | 獲取 HTTP 標頭集合。 |
| HttpMethod | 獲取客戶端使用的 HTTP 資料傳輸方法(例如 GET、POST 或 HEAD)。 |
| InputStream | 獲取傳入 HTTP 實體主體的內容。 |
| IsSecureConnection | 獲取一個值,該值指示 HTTP 連線是否使用安全套接字(即 HTTPS)。 |
| QueryString | 獲取 HTTP 查詢字串變數的集合。 |
| RawUrl | 獲取當前請求的原始 URL。 |
| RequestType | 獲取或設定客戶端使用的 HTTP 資料傳輸方法(GET 或 POST)。 |
| ServerVariables | 獲取 Web 伺服器變數的集合。 |
| TotalBytes | 獲取當前輸入流中的位元組數。 |
| Url | 獲取有關當前請求的 URL 的資訊。 |
| UrlReferrer | 獲取有關連結到當前 URL 的客戶端先前請求的 URL 的資訊。 |
| UserAgent | 獲取客戶端瀏覽器的原始使用者代理字串。 |
| UserHostAddress | 獲取遠端客戶端的 IP 主機地址。 |
| UserHostName | 獲取遠端客戶端的 DNS 名稱。 |
| UserLanguages | 獲取客戶端語言首選項的已排序字串陣列。 |
下表列出了一些重要的方法
| 方法 | 描述 |
|---|---|
| BinaryRead | 從當前輸入流執行指定數量位元組的二進位制讀取。 |
| Equals(Object) | 確定指定的 Object 是否等於當前 Object。(繼承自 object。) |
| GetType | 獲取當前例項的 Type。 |
| MapImageCoordinates | 將傳入的影像欄位窗體引數對映到適當的 x 座標和 y 座標值。 |
| MapPath(String) | 將指定的虛擬路徑對映到物理路徑。 |
| SaveAs | 將 HTTP 請求儲存到磁碟。 |
| ToString | 返回表示當前物件的字串。 |
| ValidateInput | 導致對透過 Cookies、Form 和 QueryString 屬性訪問的集合進行驗證。 |
Response 物件
Response 物件表示伺服器對客戶端請求的響應。它是 System.Web.HttpResponse 類的例項。
在 ASP.NET 中,Response 物件在將 HTML 文字傳送到客戶端方面沒有發揮任何重要作用,因為伺服器端控制元件具有巢狀的、面向物件的自身呈現方法。
但是,HttpResponse 物件仍然提供一些重要的功能,例如 Cookie 功能和 Redirect() 方法。Response.Redirect() 方法允許將使用者轉移到另一個頁面,在應用程式內部和外部。它需要往返。
Response 物件的屬性和方法
下表列出了一些值得注意的 Response 物件屬性
| 屬性 | 描述 |
|---|---|
| Buffer | 獲取或設定一個值,該值指示是否緩衝輸出並在完成響應處理後傳送輸出。 |
| BufferOutput | 獲取或設定一個值,該值指示是否緩衝輸出並在完成頁面處理後傳送輸出。 |
| Charset | 獲取或設定輸出流的 HTTP 字元集。 |
| ContentEncoding | 獲取或設定輸出流的 HTTP 字元集。 |
| ContentType | 獲取或設定輸出流的 HTTP MIME 型別。 |
| Cookies | 獲取響應 Cookie 集合。 |
| Expires | 獲取或設定瀏覽器上快取的頁面過期之前的分鐘數。 |
| ExpiresAbsolute | 獲取或設定從快取中刪除快取資訊的絕對日期和時間。 |
| HeaderEncoding | 獲取或設定表示當前標頭輸出流編碼的編碼物件。 |
| Headers | 獲取響應標頭的集合。 |
| IsClientConnected | 獲取一個值,該值指示客戶端是否仍然連線到伺服器。 |
| Output | 啟用將文字輸出到傳出的 HTTP 響應流。 |
| OutputStream | 啟用對傳出的 HTTP 內容主體的二進位制輸出。 |
| RedirectLocation | 獲取或設定 Http Location 標頭的值。 |
| Status | 設定返回給客戶端的狀態行。 |
| StatusCode | 獲取或設定返回給客戶端的輸出的 HTTP 狀態程式碼。 |
| StatusDescription | 獲取或設定返回給客戶端的輸出的 HTTP 狀態字串。 |
| SubStatusCode | 獲取或設定限定響應狀態程式碼的值。 |
| SuppressContent | 獲取或設定一個值,該值指示是否將 HTTP 內容傳送到客戶端。 |
下表列出了一些重要的方法
| 方法 | 描述 |
|---|---|
| AddHeader | 將 HTTP 標頭新增到輸出流。AddHeader 用於與早期版本的 ASP 保持相容性。 |
| AppendCookie | 基礎結構將 HTTP Cookie 新增到內在 Cookie 集合。 |
| AppendHeader | 將 HTTP 標頭新增到輸出流。 |
| AppendToLog | 將自定義日誌資訊新增到 InterNET Information Services (IIS) 日誌檔案。 |
| BinaryWrite | 將二進位制字元字串寫入 HTTP 輸出流。 |
| ClearContent | 清除緩衝流中的所有內容輸出。 |
| Close | 關閉與客戶端的套接字連線。 |
| End | 將所有當前緩衝的輸出傳送到客戶端,停止頁面的執行,並引發 EndRequest 事件。 |
| Equals(Object) | 確定指定的 Object 是否等於當前 Object。 |
| Flush | 將所有當前緩衝的輸出傳送到客戶端。 |
| GetType | 獲取當前例項的 Type。 |
| Pics | 將 HTTP PICS-Label 標頭附加到輸出流。 |
| Redirect(String) | 將請求重定向到新的 URL 並指定新的 URL。 |
| Redirect(String, Boolean) | 將客戶端重定向到新的URL。指定新的URL以及是否應終止當前頁面的執行。 |
| SetCookie | 更新cookie集合中已存在的cookie。 |
| ToString | 返回表示當前 Object 的 String。 |
| TransmitFile(String) | 將指定的檔案直接寫入HTTP響應輸出流,而無需將其緩衝在記憶體中。 |
| Write(Char) | 將字元寫入HTTP響應輸出流。 |
| Write(Object) | 將物件寫入HTTP響應流。 |
| Write(String) | 將字串寫入HTTP響應輸出流。 |
| WriteFile(String) | 將指定檔案的內容作為檔案塊直接寫入HTTP響應輸出流。 |
| WriteFile(String, Boolean) | 將指定檔案的內容作為記憶體塊直接寫入HTTP響應輸出流。 |
示例
以下簡單示例包含一個文字框控制元件,使用者可以在其中輸入姓名;一個按鈕,用於將資訊傳送到伺服器;以及一個標籤控制元件,用於顯示客戶端計算機的URL。
內容檔案
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="server_side._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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Enter your name:
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" />
<br />
<asp:Label ID="Label1" runat="server"/>
</div>
</form>
</body>
</html>
Button1_Click 後面的程式碼
protected void Button1_Click(object sender, EventArgs e) {
if (!String.IsNullOrEmpty(TextBox1.Text)) {
// Access the HttpServerUtility methods through
// the intrinsic Server object.
Label1.Text = "Welcome, " + Server.HtmlEncode(TextBox1.Text) + ". <br/> The url is " + Server.UrlEncode(Request.Url.ToString())
}
}
執行頁面以檢視以下結果