成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET組件設計之復雜屬性和狀態(tài)管理淺析

開發(fā) 后端
ASP.NET組件設計之復雜屬性和狀態(tài)管理向你講解了在ASP.NET組件設計中復雜屬性和狀態(tài)管理的實現(xiàn)以及需要注意的方面。

ASP.NET組件設計中復雜屬性和狀態(tài)管理的討論:

ASP.NET組件設計之復雜屬性聲明/持久:

所謂復雜屬性,即通常不可用CLR的基本數(shù)據(jù)類型表達的屬性。譬如,F(xiàn)ontInfo,即代表字體屬性,包含Bold 、Name、Size、Color等信息(通常稱為子屬性)。

對于復雜屬性,控件在聲明時候,通常采用 屬性—子屬性 的連字符表示復雜屬性的一個子屬性。

  1. ﹤sdp:TextBox id=”Textbox1” Font-Name=”Vender” Font-Size=”12pt” runat=”server” /﹥ 

其中的劃線部分即代表了Font屬性。

復雜屬性的另外一種表達是,將復雜屬性嵌套放于控件聲明標簽之中,乘坐 內部屬性持久性(inner property persistence )。如:

  1. ﹤asp:DataGrid runat=”Server”﹥  
  2.  
  3. ﹤HeaderStyle ForeColor=”Red” /﹥  
  4.  
  5.    ﹤/asp:DataGrid ﹥ 

復雜屬性序列化/持久化的設計時支持

設計時實現(xiàn)是在控件之外實現(xiàn)的,利用元數(shù)據(jù)(attribute)來實現(xiàn)。對于連字符實現(xiàn)的子屬性,經過設定特定的attribute,即可影響設計器從而實現(xiàn)設計時支持。

DesignerSerializationVisibility 實際上在ASP.NET中是指DesignerSerializationVisibilityAttribute的屬性類,通過元數(shù)據(jù)中指定,并且設為:

DesignerSerializationVisibility.Content可以讓設計器知道,應當將復雜屬性的內容進行序列化而不是屬性本身

DesignerSerializationVisibility.Hidden       讓設計器忽略屬性和屬性內容

DesignerSerializationVisibility.Visible       讓設計器以正常方式序列化

所謂正常方式,就是以字符傳、整型如果不屬于這些就用字節(jié)方式持久化屬性(當然對于復雜屬性這相當劃不來)。

NotifyParentProperty(true) 表示屬性瀏覽器對控件得此復雜屬性的修改可以通告給控件,并告知之上的各個對象(通常會給設計器應用程序),告知屬性已經“臟”了。這些約定對控件設計者和設計器開發(fā)者以及ASP.NET頁面的開發(fā)者都很重要。

對于標簽嵌套方式的屬性持久,應當采用ParseChilren(true)來指定屬性的持久,設計器實現(xiàn)嵌套方式則應當指定PersistChildren(false)讓設計器將嵌套標簽轉化為復雜屬性的一部分(而不是內嵌的子控件)

ASP.NET組件設計之類型轉換器

為了解讀復雜屬性的持久形式為設計運行時形式,需要對復雜屬性指定類型轉換器,基本目標是將持久形式解讀轉換為CLR支持的類型,同時也將屬性的CLR類型表達為設計時、運行時的持久形式。即將Font-Size=”8pt”轉換為int32 的8,將復雜屬性的8持久化為Font-Size=”8pt”.

類型轉換器的實現(xiàn)不依賴于任何用戶界面功能。因此,可在 Windows 窗體和 Web 窗體中應用同一個類型轉換器。

類型轉換器繼承自System.ComponentModel.TypeConverter。

ASP.NET組件設計之實現(xiàn)類型轉換器的步驟:

1、 定義一個從 System.ComponentModel.TypeConverter 派生的類。

2、 重寫 CanConvertFrom 方法,指定轉換器可從中轉換的類型。此方法是重載方法。

3、 重寫實現(xiàn)轉換的 ConvertFrom 方法。此方法是重載方法。

4、 重寫 CanConvertTo 方法,指定轉換器可轉換為的類型。轉換為字符串類型不需要重寫此方法。此方法是重載方法。

5、 重寫實現(xiàn)轉換的 ConvertTo 方法。此方法是重載方法。

6、 重寫執(zhí)行驗證的 IsValid 方法。此方法是重載方法。

通過TypeConverter(typeof(somecustimoziedTypeConverter))的方式確定某個屬性同特定的類型轉換器相關。

對于ASP.NET應用來講,如何保持兩個頁面間的控件的復雜屬性很重要。Control類的默認狀態(tài)管理交給ViewSatte字典,而復雜屬性,使用ViewState時不可能的,這必須用到IstateManager接口參與狀態(tài)管理。

  1.  
  2. Interface IstateManager  
  3.  
  4. {  
  5.  
  6.    public bool IsTrackingViewState ;
  7.  //當由類實現(xiàn)時,獲取一個值,通過該值指示服務器控件是否正在跟蹤其視圖狀態(tài)更改。   
  8.  
  9.        void LoadViewState(   object state); 
  10. //當由類實現(xiàn)時,加載服務器控件以前保存的控件視圖狀態(tài)。   
  11.  
  12. object SaveViewState(); 
  13. //當由類實現(xiàn)時,將服務器控件的視圖狀態(tài)更改保存到 Object。   
  14.  
  15. void TrackViewState();
  16. //當由類實現(xiàn)時,指示服務器控件跟蹤其視圖狀態(tài)更改。  
  17.  

ASP.NET組件設計之Control,Control的ViewSatte屬性實際上就是一個復雜屬性,本質上是一個字典類,通過實現(xiàn)了IstateManager接口參與狀態(tài)管理(ViewState的細節(jié)):

1、 ViewState的數(shù)據(jù)類型是復雜屬性System.Web.UI.StateBag類。實現(xiàn)IstateManager接口的字典。保存多項鍵/值對,鍵為字符串,值為對象,當某個對象自動添加到State把實例即ViewState中去時,自動加入一個StateItem對象,存有實際的屬性值和相關的布爾標志,知識此屬性(StateItem)在初始化后修改過。

2、 在接口的TrackViewState中將此函數(shù)的值對應到StateBag的內部布爾變量,如果為真,則當StateItem添加時候(跟蹤一個對象的ViewState),或者修改行為,都將StateItem標記為修改過。

3、 SaveViewSate中,枚舉項目,創(chuàng)建并返回兩個ArrayList分別標記修改過的鍵和值。

4、 LoadViewSatet執(zhí)行SaveState的逆操作。

當在ViewSatte中保存屬性時候,其狀態(tài)會自動維護。可以在ViewState中保存任何控減災往返傳送時需要的數(shù)(而不是全部數(shù)據(jù),從效率考慮剔除冗余數(shù)據(jù)),且任何保存在ViewState紅的數(shù)據(jù)必須時通過LosFormatter串行化的

所有復雜屬性的狀態(tài)保存應當實現(xiàn)IstateManager來將復雜屬性轉換為可以在ViewState中保存的簡單屬性,并且也可以ViewState中保存的簡單屬性恢復組合為復雜屬性。

ASP.NET組件設計之復雜屬性和狀態(tài)管理的相關內容就向你介紹到這里,希望對你學習ASP.NET組件設計中的復雜屬性和狀態(tài)管理有所幫助。

【編輯推薦】

  1. ASP.NET組件設計學習之ASP.NET服務器控件
  2. ASP.NET自定義控件入門淺析
  3. ASP.NET服務器控件視圖淺析
  4. ASP.NET組件設計之生命周期詳解
  5. ASP.NET組件設計之傳輸機制淺析
責任編輯:仲衡 來源: cnblogs
相關推薦

2009-08-05 16:53:14

ASP.NET組件設計

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設計

2009-08-05 16:59:55

ASP.NET組件設計

2009-08-06 18:18:27

ASP.NET控件開發(fā)ASP.NET復合控件

2009-07-29 09:34:54

IsPostBack屬ASP.NET

2009-08-10 14:38:29

ASP.NET組件設計

2009-08-10 15:42:33

ASP.NET Che

2009-08-10 16:07:44

ASP.NET Lin

2009-08-07 17:49:44

控件設計器

2009-07-22 18:03:00

ASP.NET ASP

2009-08-10 10:19:47

ASP.NET組件設計

2009-08-07 16:32:52

ASP.NET控件設計時支

2009-08-07 17:59:35

控件設計器

2009-08-05 15:50:13

ASP.NET優(yōu)點

2009-07-31 12:43:59

ASP.NET MVC

2009-08-05 18:36:12

ASP.NET Che

2009-07-24 13:41:15

ASP.NET AJA

2009-08-06 18:32:00

ASP.NET控件開發(fā)ASP.NET復合控件

2009-08-05 17:39:13

ASP.NET常用狀態(tài)

2009-08-06 17:13:56

ASP.NET自定義控
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品美女久久久久久久网站 | 亚洲超碰在线观看 | 欧美日韩在线视频一区 | 久草www| 国产91综合 | 日韩欧美在线一区 | 国产精品一区二区三区在线 | 亚洲一页 | 国产一区二区在线视频 | 日本一区二区三区在线观看 | 亚洲精品在线看 | 午夜一级黄色片 | 日本免费视频 | 美女视频一区 | 一区二区三区四区免费在线观看 | 黄色国产大片 | 欧美在线成人影院 | 美日韩免费视频 | 国产在线中文字幕 | 亚洲国产日韩一区 | 亚洲视频一区二区三区 | 成人美女免费网站视频 | 91色在线视频 | 久草免费福利 | 国产精品一区一区三区 | 成人特级毛片 | 亚洲国产中文字幕 | 在线观看日本高清二区 | 成人免费视频播放 | 国产三级网站 | 在线欧美一区二区 | 国产精品片aa在线观看 | 天天天堂 | 精品香蕉一区二区三区 | 成人午夜性成交 | 成年人黄色一级毛片 | 日韩三级一区 | 九九精品在线 | 狠狠色综合网站久久久久久久 | 97精品超碰一区二区三区 | 偷拍自拍网|