ViewState 是 ASP.NET 提供的頁面狀態保持機制,本質為隱藏欄位 __VIEWSTATE,儲存經 Base64 編碼的序列化狀態資料。本文從內部實作角度解析 ViewState 原理。
Application.Lock/Unlock)。伺服器控制項透過 SaveViewState / LoadViewState 將狀態序列化為 Base64 字串寫入 __VIEWSTATE 隱藏欄位,PostBack 時自動還原。開發者可透過 Request.Params["__VIEWSTATE"] 取得原始值,並用 Convert.FromBase64String 解碼查看內容。
<%@ Page language="c#" Codebehind="ViewStateTest.aspx.cs" AutoEventWireup="false" Inherits="CsdnTest.ViewStateTest" %> <html><body> <form id="ViewStateTest" method="post" runat="server"> <asp:Button ID="btnPostBack" Runat="server" Text="Post Back" /> <br/> <asp:CheckBox ID="chkTest" Runat="server" Text="This is a check box" /> </form></body></html>
private void btnPostBack_Click(object sender, System.EventArgs e)
{
// [1] 直接輸出 ViewState 原始值
Response.Write("ViewState :" + Request.Params["__VIEWSTATE"] + "<br/>");
// [2] Base64 解碼查看內容
string decodeValue = Encoding.UTF8.GetString(Convert.FromBase64String(Request.Params["__VIEWSTATE"]));
// 進一步解析...
}
透過解碼可觀察 ViewState 內部結構,理解控制項狀態如何跨請求保持。
Win7 無法刪除 TrustedInstaller 擁有的系統檔案?取得完整控制權限後即可刪除
Win8 鎖定畫面加入便利貼:TuneUp IncrediLock 應用教學
如何升級至 Win10 最新預覽版 9926?完整更新步驟與序號教學
Windows 10 開啟 UAC (使用者帳戶控制) 三種方法:第三方工具、控制台、系統設定工具 (msconfig)
一個 Mac 用戶眼中的 Win10:尊重習慣、不再強迫改變操作方式
Win7 安裝程式提示 Win7.Vxd 檔案未找到?登錄刪除殘留鍵值解決