在VS2008中创建自定义控件(十三)添加内镶属性


本文目的:

添加内镶属性


 

   什么是内镶属性?先看下图吧。

 

    在上图中,我们添加了一个日历控件,该控件的DayHeaderStyle样式就是一个内镶属性。在aspx源代码中,我们可以看到<DayHeaderStyle>标签是位于<asp:Calendar>标签之间的,这就是内镶属性。

 

    在《在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)》和《在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)》中,我们添加了一个可折叠的属性,这个属性我们也可以将它改成内镶属性。事先声明一下,这里的内镶属性只是在aspx源代码中显示的内镶,而在属性窗口中还是显示为折叠属性。

 

    要将折叠属性改为内镶属性,可以在折叠属性上(在本例中为作者属性)再添加一个PersistenceMode特性,这个特性可以用来指定当属性窗口中的属性或事件的值添加或改变时如何保存到aspx页。

    PersistenceMode特性的值是一个PersistenceMode枚举值,在微软公布的值包含以下几种

    1、Attribute:指定属性或事件保持为属性。

    2、InnerProperty:指定在ASP.NET服务器控件中保持为嵌套标记。这通常用于复杂对象,它们具有自己的持久性属性。

    3、InnerDefaultProperty:指定属性在ASP.NET服务器控件中保持为内部文本,还指示将该项属性定义为元素的默认属性,只能撒旦之王一个属性为默认属性。

    4、EncodedInnerDefaultProperty:指定属性作为ASP.NET 服务器控件的唯一内部文本而进行保持,属性值是 HTML 编码的,只能对字符串做这种指定。

 

    微软的解释看得有点晕乎,不过可以明确的是,对于我们这种可折叠的属性,也就是他们所说的复杂对象,应该使用InnerProperty。因此,我们要为作者属性添加一个“[PersistenceMode(PersistenceMode.InnerProperty)]”特性,如以下代码所示。

 

[c-sharp]  view plain copy
  1. /// <summary>  
  2. /// 唐诗的作者  
  3. /// </summary>  
  4. [Category("Data")]              //放到“数据”分组中  
  5. [Browsable(true)]               //该项属性是否会显示在控件的“属性”窗口中  
  6. [Description("诗的作者")]       //属性的说明  
  7. [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]  
  8. [TypeConverter(typeof(ExpandableObjectConverter))]  
  9. [PersistenceMode(PersistenceMode.InnerProperty)]  
  10. public Author PoetryAuthor  
  11. {  
  12.     get  
  13.     {  
  14.         return _author;  
  15.     }  
  16.     set  
  17.     {  
  18.         _author = value;  
  19.     }  
  20. }  
 

 

    重新生成后,我们可以在属性窗口中添加作者属性值,此时,aspx源代码中,不再以PoetryAuthor-CourtesyName、PoetryAuthor-Name和PoetryAuthor-SelfTitled属性的形式出现,而是以<PoetryAuthor CourtesyName="子美" Name="杜甫" SelfTitled="少陵野老" />的形式出现——这,就是内镶属性。如下图所示。

 

    生成后的运行结果如下图所示:

 

 

===================================================================

原创不容易,转载请注明出处:http://hi.csdn.net/smallfools

相关链接:

  1. 在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目
  2. 在VS2008中创建自定义控件(二)创建自定义控件并将其添加到工具箱中
  3. 在VS2008中创建自定义控件(三)在网页中添加自定义控件
  4. 在VS2008中创建自定义控件(四)为自定义控件添加默认值
  5. 在VS2008中创建自定义控件(五)修改tagprefix
  6. 在VS2008中创建自定义控件(六)创建完全自定义控件
  7. 在VS2008中创建自定义控件(七)自定义控件的中常用到的特性
  8. 在VS2008中创建自定义控件(八)输出HTML代码
  9. 在VS2008中创建自定义控件(九)添加属性
  10. 在VS2008中创建自定义控件(十)添加枚举型属性
  11. 在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)
  12. 在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)
  13. 在VS2008中创建自定义控件(十三)添加内镶属性
  14. 在VS2008中创建自定义控件(十四)内镶属性与内联属性的优先级
  15. 在VS2008中创建自定义控件(十五)创建控件时出错(未能对属性XXX设置XXX)的解决方法

===================================================================

    本例的源代码可以在http://download.csdn.net/source/3265989中下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值