控件開發系列第六章,深入探討屬性持久化機制。許多開發者對頁面生命週期與解析過程存有疑問,這正是理解屬性持久化的基石。
ASPX 頁面提交時,會被解析為繼承 Page 的類別:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
CodeFile 與 Inherits 指定了代碼隱藏類別。看似 XML 的標記文檔:
<html xmlns="https://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無標題頁</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="提交" OnClick="Button1_Click" />
<asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
</div>
</form>
</body>
</html>
實際上會被編譯為動態類別,控制項實例在 FrameworkInitialize 階段建構。理解這一過程,才能掌握屬性如何透過 ViewState、ControlState 或自訂持久化提供者在 Postback 間保持狀態。