ASPX 標籤中控件屬性以三種形式出現:標籤屬性、標籤內文字、巢狀標籤。PersistenceModeAttribute 精確控制每個屬性的序列化呈現方式。
<asp:DropDownList ID="ddl" runat="server" Font-Bold="True">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
</asp:DropDownList>
ID、runat、Font-Bold(子屬性語法)ListItem 集合項目ListItem 內的 "1"、"2" 文字內容[PersistenceMode(PersistenceMode.Attribute)] // 預設:標籤屬性
[PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)] // 編碼內部文字,唯一預設屬性
[PersistenceMode(PersistenceMode.InnerDefaultProperty)] // 內部文字,允許 HTML/控件,唯一預設屬性
[PersistenceMode(PersistenceMode.InnerProperty)] // 巢狀屬性標籤
public class ListItem
{
[PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]
public string Text { get; set; }
[PersistenceMode(PersistenceMode.Attribute)]
public string Value { get; set; }
}
ASPX 中:
<asp:ListItem Value="1">項目一</asp:ListItem>
<asp:ListItem Value="2">項目二</asp:ListItem>
Value 為 Attribute 模式 → 標籤屬性Text 為 EncodedInnerDefaultProperty → 標籤內文字(自動 HTML 編碼)<asp:DropDownList Font-Bold="True" />
// 對應程式碼
ddl.Font.Bold = true; // Font 為 FontInfo 類別,Bold 為其屬性
ASP.NET 解析器識別 - 分隔的子屬性語法,自動對應物件圖導航。