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

ASP.NET 控件開發系列(四):屬性序列化模式與設計器序列化可見性控制

     編輯:關於ASP.NET

控件屬性如何在 ASPX 標籤中持久化,由 PersistenceModeAttribute 決定四種模式;DesignerSerializationVisibility 控制屬性是否被設計器序列化。

PersistenceMode 四種模式對照

模式ASPX 形式適用屬性範例
Attribute (預設)<ctrl Prop="val" />簡單型別Width, Enabled
EncodedInnerDefaultProperty<ctrl>文字內容</ctrl> (HTML 編碼)單一字串屬性ListItem.Text
InnerDefaultProperty<ctrl>內含 HTML/控件</ctrl>允許標籤的字串DropDownList.Items (預設)
InnerProperty<ctrl><Prop>...</Prop></ctrl>複雜物件、集合DropDownList.Items (明確)

關鍵差異:EncodedInnerDefaultProperty vs InnerDefaultProperty

  • EncodedInnerDefaultProperty:內容視為純文字,< 輸出為 &lt;,不允許巢狀控件標籤
  • InnerDefaultProperty:內容可包含可解析的控件標籤,允許巢狀控件

隱藏屬性不序列化

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string InternalCacheKey { get; set; }
  • Hidden:不序列化至 ASPX、不顯示於 PropertyGrid
  • Content:序列化物件內容(適用集合/複雜物件)
  • Visible:預設,完整序列化

實戰:DropDownList Items 屬性雙重標記

[PersistenceMode(PersistenceMode.InnerProperty)]
[DefaultProperty("Items")]
public ListItemCollection Items { get; }

同時支援:

<asp:DropDownList>
  <asp:ListItem Value="1">項目一</asp:ListItem>  <!-- InnerProperty -->
</asp:DropDownList>

<asp:DropDownList Items="項目一,項目二" />  <!-- Attribute (需 TypeConverter) -->
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved