JSP 才有內建物件概念。ASP.NET 中 `Request`、`Response` 等為 `Page` 基類屬性,無需 `new` 即可使用。核心圍繞 HTTP 無狀態協議:Client Request → Server Response。
| 屬性 | 類型 | 說明 |
|---|---|---|
| QueryString | NameValueCollection | URL 參數集合 |
| Form | NameValueCollection | POST 表單資料 |
| Cookies | HttpCookieCollection | 客戶端送來的 Cookie |
| ServerVariables | NameValueCollection | 伺服器環境變數 (HTTP_HEADERS 等) |
| Url / UrlReferrer | Uri | 請求 URL / 來源頁面 URL |
| UserAgent | string | 瀏覽器識別字串 |
| UserHostAddress | string | 客戶端 IP |
| HttpMethod | string | GET/POST 等 |
| InputStream | Stream | 原始請求內容流 |
| ContentEncoding | Encoding | 請求編碼 (可設定) |
| 屬性/方法 | 類型 | 說明 |
|---|---|---|
| Write / WriteFile | 方法 | 輸出字串/檔案至回應流 |
| BinaryWrite | 方法 | 輸出位元組陣列 (圖片/檔案下載) |
| Redirect(url) | 方法 | 302 重導向 (客戶端跳轉) |
| RedirectPermanent(url) | 方法 | 301 永久重導向 (SEO 友善) |
| ContentType | string | MIME 類型 (如 text/html, application/json) |
| Charset / ContentEncoding | string/Encoding | 輸出編碼 |
| StatusCode / StatusDescription | int/string | HTTP 狀態碼 |
| Cookies | HttpCookieCollection | 要送往客戶端的 Cookie |
| Cache | HttpCachePolicy | 輸出快取控制 (SetCacheability, SetExpires 等) |
| AppendHeader / AddHeader | 方法 | 加入自訂 HTTP 標頭 |
| Clear / End / Flush | 方法 | 清空緩衝/結束回應/刷新輸出 |
| TransmitFile(path) | 方法 | 高效傳送檔案 (不載入記憶體) |
// 寫入
var c = new HttpCookie("UserName", "John") { Expires = DateTime.Now.AddDays(7), HttpOnly = true };
Response.Cookies.Add(c);
// 讀取
if (Request.Cookies["UserName"] != null) string name = Request.Cookies["UserName"].Value;
屬性:`Name`、`Value`、`Expires`、`Domain`、`Path`、`Secure`、`HttpOnly`、`SameSite` (Core)。
| 語法 | 名稱 | 用途 | 執行時機 |
|---|---|---|---|
| `<% ... %>` | 渲染區塊 | 執行任意伺服器程式碼 (迴圈、判斷) | Render 階段 |
| `<%= expr %>` | 輸出運算式 | 等同 `Response.Write(expr)` | Render 階段 |
| `<%# expr %>` | 資料繫結運算式 | `Eval`/`Bind`,僅在 `DataBind()` 時計算 | DataBind 時 |
| `<%$ Expr:Key %>` | 運算式建置器 | 連接字串、應用程式設定、資源檔 | 編譯/剖析時 |
| `<%-- 註解 --%>` | 伺服器端註解 | 不輸出至客戶端 | 剖析時忽略 |
掌握 `Request`/`Response`/`Server`/`Session`/`Cookie`/`Application` 六大核心物件的關鍵屬性方法,與五種運算式語法的執行時機差異,是 ASP.NET 開發者處理 HTTP 互動、狀態管理、資料輸出的基本功。善用 `Response.TransmitFile` 傳大檔、`Session` 模式選擇支援 Web Farm、`<%# %>` 配合資料繫結、`<%$ %>` 取得設定值,能寫出更專業的程式碼。