国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

ASP.NET 2.0服務器控件開發之復雜屬性

來源:懂視網 責編:小采 時間:2020-11-27 22:45:51
文檔

ASP.NET 2.0服務器控件開發之復雜屬性

ASP.NET 2.0服務器控件開發之復雜屬性:在上一篇文章中,曾經提及復雜屬性的概念。復雜屬性的最大特征是屬性的類型是本身具有屬性(稱為子屬性)的類。通常情況下,復雜屬性表現為3種形式:連字符形式屬性、內部嵌套形式屬性和內部嵌套形式默認屬性。本文將介紹以上3種形式復雜屬性的具體實現方
推薦度:
導讀ASP.NET 2.0服務器控件開發之復雜屬性:在上一篇文章中,曾經提及復雜屬性的概念。復雜屬性的最大特征是屬性的類型是本身具有屬性(稱為子屬性)的類。通常情況下,復雜屬性表現為3種形式:連字符形式屬性、內部嵌套形式屬性和內部嵌套形式默認屬性。本文將介紹以上3種形式復雜屬性的具體實現方

在上一篇文章中,曾經提及“復雜屬性”的概念。復雜屬性的最大特征是屬性的類型是本身具有屬性(稱為子屬性)的類。通常情況下,復雜屬性表現為3種形式:連字符形式屬性、內部嵌套形式屬性和內部嵌套形式默認屬性。本文將介紹以上3種形式復雜屬性的具體實現方法。

  1. 實現連字符形式復雜屬性

  連字符形式屬性是比較常見的復雜屬性。我們常用的Font屬性就是一個復雜屬性,其包括多個子屬性,如Bold、Name等。這種類型屬性具有兩種語法格式:一種是利用連字符語法,在控件的開始標記中保存子屬性,例如,Font-Bold,Font-Name。另外一種格式是在控件的標記中保存子屬性,例如,<font Bold="true" />。后者比前者的可讀性強。

  實現連字符形式的復雜屬性,必須對該復雜屬性及其子屬性實現設置指定的設計時元數據。下面首先列舉了復雜屬性實現過程中的相關元數據設置示例。請閱讀下面的源代碼。

 

public class CustomerControl:WebControl{
 [ DesignerSerializationVisibility( DesignerSerializationVisibility.Content), NotifyParentProperty(true) ]
 public SizeInfo Size { ...... }
}
  如上代碼所示,Size是一個復雜屬性,其屬性類型為SizeInfo(自定義類)。在Size屬性實現前設置了兩個設計時元數據:DesignerSerializationVisibility和NotifyParentProperty。DesignerSerializationVisibility用于指定在設計時序列化組件上的屬性時,所使用的持久性類型。其值設置為DesignerSerializationVisibility.Content枚舉值,用于指定序列化程序應該序列化屬性的內容即子屬性,而不是Size屬性本身,因為序列化Size沒有任何意義。另外,還包括一個NotifyParentProperty(true)設置,它的作用是使得屬性瀏覽器中對子屬性的修改通知一直上傳到對象模型,并在被修改了子屬性的控件中產生修改通知。

  在完成了復雜屬性的元數據設置后,開發人員還必須對子屬性設置相關的設計時元數據。例如,Size包括兩個子屬性Height和Width,那么它們的實現代碼應如下所示。

[TypeConverter(typeof(ExpandableObjectConverter))]public class SizeInfo{
 [ NotifyParentProperty(true) ]
 public UInt32 Height {......}
 [ NotifyParentProperty(true) ]
 public UInt32 Width {......}
}
  如上代碼所示,子屬性Height和Width分別被設置了元數據NotifyParentProperty(true)。這樣,當子屬性發生修改時,.NET框架將自動產生修改通知,并且通知到父屬性Size。另外,還有一個設計時特性TypeConverter(typeof(ExpandableObjectConverter)),它告訴屬性瀏覽器提供擴展和折疊樣式,這樣控件開發者可以在屬性瀏覽器中直接編輯子屬性。

  以上介紹了聲明連字符形式屬性的方法。從中可以看出,在聲明連字符屬性過程中需要把握兩個要點:一是復雜屬性的設計時元數據設置;二是子屬性的設計時特性設置。

  2. 實現內部嵌套形式復雜屬性

  通常情況下,開發人員多實現連字符形式的復雜屬性。然而,對復雜屬性還可以實現內部嵌套的形式。下面的代碼就是一個典型的內部潛逃形式復雜屬性的應用。

 

<MyControl:CustomeControl id="demo1" runat="server">
<HeaderStyle ForeColor="#FFFF00" BackColor="#99ff00">
</HeaderStyle>
... ...
</MyControl: CustomeControl>
  如上代碼所示,自定義控件MyControl的屬性HeaderStyle是一個典型的內部嵌套形式屬性。實現這種形式的屬性與實現連字符形式屬性有很大不同,需要分為兩種情況。

  如果自定義服務器控件類繼承自Control類,那么必須在控件類之前設置元數據屬性ParseChildren和PersistChildren。示意性代碼如下所示。

[ParseChildren(true),PersistChildren(false)]
public class CustomeControl:Control{ ......}
  如上代碼所示,在控件類前設置了兩個元數據屬性ParseChildren和PersistChildren。前者用于告知頁面分析器把控件標記中的內容解析為屬性還是子控件,該屬性值設置為true,則表示解析為屬性。后者用于告知設計器把控件標記中的內容保存為屬性還是子控件,該屬性值設置為false,表示保存為屬性。

  如果自定義控件類繼承自WebControl類,那么就不需要以上的元數據屬性設置,因為,WebControl類已經應用了這些元數據屬性了。

  無論自定義控件類繼承自WebControl類還是Control類,為實現內部嵌套形式復雜屬性,都必須在屬性實現中設置如下元數據屬性。

[ DesignerSerializationVisibility( DesignerSerializationVisibility.Content), NotifyParentProperty(true), PersistenceMode(PersistenceMode.InnerProperty)]
public TableItemStyle HeaderStyle{......}
  由上面的代碼可以看到,必須在實現復雜屬性之前,應用3個元數據屬性:DesignerSerializationVisibility、NotifyParentProperty和PersistenceMode。前兩個元數據屬性在前文中已經說明,第三個PersistenceMode用于指定如何將服務器控件屬性或事件保持到ASP.NET頁的元數據屬性,該特性的值設置為枚舉值:PersistenceMode.InnerProperty,這表示將所標識屬性(HeaderStyle)保持為嵌套標記。

  以上介紹了內部嵌套形式屬性聲明的方法。總結起來分為兩種情況:一是所開發控件從Control派生,則需要設置五個設計時特性ParseChildrenAttribute(true)、PersistChildren(false)、DesignerSerializationVisibility、NotifyParentProperty和PersistenceMode。前兩個特性在控件類前設置,用于告訴編譯器將控件標記內的內容為屬性,需要解析為屬性;后三個特性在屬性前指定,用于指示編譯器此屬性為內部嵌套形式屬性,在應用控件屬性時,必須采用嵌套形式。二是所開發控件從WebControl派生,這種情況比較簡單,只需設置上文中后3個設計時特性即可。

  3. 實現內部嵌套形式默認復雜屬性

  內部嵌套形式默認屬性與內部嵌套形式屬性非常類似,它通常用于設置某個控件的集合屬性。例如,標準服務器控件中的DataList、DropDownList控件中的屬性均為內部嵌套形式默認屬性。

  為了實現這種形式的屬性,主要需設置兩個元數據屬性:一是在控件類前設置ParseChildren(true, "DefaultPropertyName"),指定該控件中嵌套的標記表示屬性,而非子控件,同時將嵌套屬性分析為該控件的集合屬性;二是在集合屬性前設置特性PersistenceMode(PersistenceMode.InnerDefaultProperty),表示將該屬性定義為控件的默認屬性。

  4. 小結

  本文介紹了創建復雜屬性的實現方法。這是實現自定義服務器控件過程中的重點和難點內容。在隨后的一篇文章中,我們將通過示例來加深對復雜屬性實現方法的認識。

 

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

ASP.NET 2.0服務器控件開發之復雜屬性

ASP.NET 2.0服務器控件開發之復雜屬性:在上一篇文章中,曾經提及復雜屬性的概念。復雜屬性的最大特征是屬性的類型是本身具有屬性(稱為子屬性)的類。通常情況下,復雜屬性表現為3種形式:連字符形式屬性、內部嵌套形式屬性和內部嵌套形式默認屬性。本文將介紹以上3種形式復雜屬性的具體實現方
推薦度:
標簽: 2.0 屬性 ASP.NET
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美整片第一页 | 伊人黄 | 日本一区二区三区免费观看 | 国产精彩视频在线观看 | 日韩城人网站 | 日本一区二区不卡在线 | 在线播放一区二区精品产 | 国产在线精品成人一区二区三区 | 一区二区三区视频在线 | 国产精品v一区二区三区 | 亚洲另类网| 日韩在线视频免费播放 | 日韩国产一区二区 | 狠狠色狠狠色综合日日不卡 | 日韩经典欧美一区二区三区 | 日韩亚洲欧美日本精品va | 久操视频免费在线观看 | 亚洲国产视频网 | 亚洲 欧美 自拍 另类 | 国产午夜视频在线观看 | 国产成人乱码一区二区三区在线 | 亚洲va国产日韩欧美精品 | 亚洲精品国产精品精 | 91久久国产综合精品女同我 | 精品123区| 最近中文字幕高清电影在线 | 日本美女一区二区 | 亚洲精品国产第七页在线 | 九九51精品国产免费看 | 欧美日韩成人在线 | 国产在线视频在线 | 啪啪网免费 | 欧美日韩精品一区二区三区视频在线 | 欧美日韩亚洲综合 | 国产欧美一区二区精品性色99 | 日韩欧美国产另类 | 国产欧美综合在线观看第七页 | 国产在线不卡视频 | 欧美高清老少配性啪啪 | 日本亚欧乱色视频在线观看 | 精品一区二区三区五区六区七区 |