<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        ASP.NET 2.0服務(wù)器控件開(kāi)發(fā)之復(fù)雜屬性

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:45:51
        文檔

        ASP.NET 2.0服務(wù)器控件開(kāi)發(fā)之復(fù)雜屬性

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

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

          1. 實(shí)現(xiàn)連字符形式復(fù)雜屬性

          連字符形式屬性是比較常見(jiàn)的復(fù)雜屬性。我們常用的Font屬性就是一個(gè)復(fù)雜屬性,其包括多個(gè)子屬性,如Bold、Name等。這種類型屬性具有兩種語(yǔ)法格式:一種是利用連字符語(yǔ)法,在控件的開(kāi)始標(biāo)記中保存子屬性,例如,F(xiàn)ont-Bold,F(xiàn)ont-Name。另外一種格式是在控件的標(biāo)記中保存子屬性,例如,<font Bold="true" />。后者比前者的可讀性強(qiáng)。

          實(shí)現(xiàn)連字符形式的復(fù)雜屬性,必須對(duì)該復(fù)雜屬性及其子屬性實(shí)現(xiàn)設(shè)置指定的設(shè)計(jì)時(shí)元數(shù)據(jù)。下面首先列舉了復(fù)雜屬性實(shí)現(xiàn)過(guò)程中的相關(guān)元數(shù)據(jù)設(shè)置示例。請(qǐng)閱讀下面的源代碼。

         

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

          在完成了復(fù)雜屬性的元數(shù)據(jù)設(shè)置后,開(kāi)發(fā)人員還必須對(duì)子屬性設(shè)置相關(guān)的設(shè)計(jì)時(shí)元數(shù)據(jù)。例如,Size包括兩個(gè)子屬性Height和Width,那么它們的實(shí)現(xiàn)代碼應(yīng)如下所示。

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

          以上介紹了聲明連字符形式屬性的方法。從中可以看出,在聲明連字符屬性過(guò)程中需要把握兩個(gè)要點(diǎn):一是復(fù)雜屬性的設(shè)計(jì)時(shí)元數(shù)據(jù)設(shè)置;二是子屬性的設(shè)計(jì)時(shí)特性設(shè)置。

          2. 實(shí)現(xiàn)內(nèi)部嵌套形式復(fù)雜屬性

          通常情況下,開(kāi)發(fā)人員多實(shí)現(xiàn)連字符形式的復(fù)雜屬性。然而,對(duì)復(fù)雜屬性還可以實(shí)現(xiàn)內(nèi)部嵌套的形式。下面的代碼就是一個(gè)典型的內(nèi)部潛逃形式復(fù)雜屬性的應(yīng)用。

         

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

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

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

          如果自定義控件類繼承自WebControl類,那么就不需要以上的元數(shù)據(jù)屬性設(shè)置,因?yàn)椋琖ebControl類已經(jīng)應(yīng)用了這些元數(shù)據(jù)屬性了。

          無(wú)論自定義控件類繼承自WebControl類還是Control類,為實(shí)現(xiàn)內(nèi)部嵌套形式復(fù)雜屬性,都必須在屬性實(shí)現(xiàn)中設(shè)置如下元數(shù)據(jù)屬性。

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

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

          3. 實(shí)現(xiàn)內(nèi)部嵌套形式默認(rèn)復(fù)雜屬性

          內(nèi)部嵌套形式默認(rèn)屬性與內(nèi)部嵌套形式屬性非常類似,它通常用于設(shè)置某個(gè)控件的集合屬性。例如,標(biāo)準(zhǔn)服務(wù)器控件中的DataList、DropDownList控件中的屬性均為內(nèi)部嵌套形式默認(rèn)屬性。

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

          4. 小結(jié)

          本文介紹了創(chuàng)建復(fù)雜屬性的實(shí)現(xiàn)方法。這是實(shí)現(xiàn)自定義服務(wù)器控件過(guò)程中的重點(diǎn)和難點(diǎn)內(nèi)容。在隨后的一篇文章中,我們將通過(guò)示例來(lái)加深對(duì)復(fù)雜屬性實(shí)現(xiàn)方法的認(rèn)識(shí)。

         

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET 2.0服務(wù)器控件開(kāi)發(fā)之復(fù)雜屬性

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品无码久久久久sm| 性感美女视频在线观看免费精品 | baoyu122.永久免费视频| 国产大片91精品免费观看男同| 亚洲AV无码乱码在线观看代蜜桃| 国产啪精品视频网站免费尤物 | 亚洲AV性色在线观看| 性短视频在线观看免费不卡流畅| 亚洲国产人成网站在线电影动漫| 免费看国产成年无码AV片| 国产成人A人亚洲精品无码| 一区免费在线观看| 亚洲国产精品成人| caoporn国产精品免费| 亚洲精品高清一二区久久| 黄色免费在线观看网址| 免费在线视频一区| www免费插插视频| 亚洲永久无码3D动漫一区| 中国人免费观看高清在线观看二区 | 亚洲色大成网站www久久九| 中文字幕av无码无卡免费| 国产成人亚洲精品| 日本免费的一级v一片| 另类图片亚洲校园小说区| 亚洲国产午夜福利在线播放| 一级黄色免费毛片| 亚洲国产精品特色大片观看完整版| 黄网站免费在线观看| 久久丫精品国产亚洲av不卡| 成人免费的性色视频| 亚洲日韩av无码中文| 免费又黄又爽的视频| ww在线观视频免费观看w| 亚洲成A人片在线观看WWW| 亚洲免费二区三区| 亚洲欧美日韩综合久久久| 亚洲另类少妇17p| 十八禁无码免费网站| 亚洲精品123区在线观看| 波多野结衣一区二区免费视频|