首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 內部機制深度解析(七):ViewState、IStateManager 與自訂型別轉換器完整實作

     編輯:關於ASP.NET

本篇為狀態管理系列總結,詳細剖析 ViewState 運作機制、IStateManager 介面角色、TypeConverter 自訂轉換邏輯,以及功能相似的 ControlState。作者以打造自訂 MyLogin 控制項為主線,逐步展示如何在 WebControl 衍生類別中儲存屬性至 ViewState。

核心程式碼片段

public class MyLogin : WebControl
{
    public string UserName
    {
        get { return ViewState["UserName"] != null ? (string)ViewState["UserName"] : "UserName"; }
        set { ViewState["UserName"] = value; }
    }
    public string UserPassword
    {
        get { return ViewState["UserPassword"] != null ? (string)ViewState["UserPassword"] : "UserPassword"; }
        set { ViewState["UserPassword"] = value; }
    }
    // TagKey、RenderContents 實作省略...
}

關鍵技術點

  1. ViewState 字典儲存:屬性 getter/setter 直接讀寫 ViewState[key],自動處理序列化。
  2. IStateManager 介面:包含 LoadViewState、SaveViewState、TrackViewState,控制項狀態物件需實作以參與生命週期。
  3. TypeConverter:將複雜型別轉為字串存入 ViewState,回郵時還原。內建轉換器支援基本型別,自訂類別需自行實作。
  4. ControlState 差異:不受 EnableViewState 影響,專為控制項核心功能(如分頁、排序)保留必要狀態。

文章強調理解自訂控制項開發基礎,建議先閱讀作者的「控制項開發系列」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved