PostBack 是 ASP.NET Web Forms 特有的頁面回發機制,本文從 Web 請求/回應基礎切入,解析 PostBack 運作原理與 IsPostBack 判斷邏輯。
傳統 ASP:瀏覽器 HTML/JS → 送出請求 → 伺服器 .asp 處理 → 回應 HTML。每次互動皆為完整頁面重新載入。

ASP.NET 引入 <form runat="server">,所有伺服器控制項事件(按鈕點擊、下拉選單變更)皆透過表單 POST 回發至同一頁面:
__VIEWSTATE、__EVENTTARGET、__EVENTARGUMENT)
public bool IsPostBack {
get { return _request.HttpVerb == HttpVerb.POST; }
}
Page_Load 中常見模式:
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
// 首次載入:資料繫結、初始化下拉選單
BindData();
}
// PostBack 時:處理事件、更新資料
}
| 特性 | GET | POST |
|---|---|---|
| 資料傳遞 | Query String (URL) | Request Body |
| 長度限制 | ~2KB (瀏覽器/伺服器) | 理論無上限 (配置可調) |
| 可見性 | URL 可見、可書籤 | 不可見 |
| 快取 | 可被快取 | 不快取 |
| 安全性 | 低(記錄於 Log/歷史) | 較高 |
| 適用場景 | 查詢、分頁、書籤分享 | 新增、修改、刪除、敏感資料 |
ASP.NET Web Forms 強制使用 POST 進行 PostBack,MVC 則可自由選擇 GET/POST 設計 RESTful API。