ASP.net控件开发系列之三

属性全接触(一)

本系列上篇文章有几位抬爱,鼓励了几句,所以劲头又足了,这不,这篇文章就出得快了,:)

希望能继续得到鼓励和指正。

这次我们来探讨下控件开发中的属性设计的方方面面,属性本是各种.net下语言的最基本语法,但控件做为一种提供给程序员二次开发的发布件,其功能的强大与使用的灵活都离不开良好的属性设计,所以我觉得属性设计是控件开发中第一座要打下的堡垒。

首先我们来看一段.aspx文件中的HTML样式的代码:

<asp:DropDownList id="DropDownList1" runat="server" Font-Bold="True">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
</asp:DropDownList>

这种代码大家都写过无数次了,不过,现在我们要从另一种角度来分析这段代码:

DropDownList控件在和用户交互时,它没有把它的属性一股脑放在一起来表示出来,而是分为以下几种情况:

1.像ID、Runat、Font-Bold这些,放在<>标记里;

2.Font-Bold不同于其它,它有一个短横分隔成两部分,这种表示方式不是Font-Bold是一个属性的名称,而是说明它是一个子属性,是Font属性(Font类)的Bold属性,对应.cs文件的写法是:Font.Bold;

3.ListItem放在了DropDownList的一双<>标记的中间,而不是标记之类,同样1、2也放在了ListItem的中间。

下面我们来分别看看这几种属性记录方式是怎么实现的。

有一个Attribute来做这件事件PersistenceMode(System.Web.UI.PersistenceModeAttribute)。

它有以下几个值供选择:

Attribute(default)属性保存在控件的标签里;默认值

EnCodedInnerDefaultProperty 属性是编码的HTML,放在控件标签对的中间保存,以上的ListItem就是这样保存Text属性的(1、2);

[PersistenceMode(PersistenceMode.EnCodedInnerDefaultProperty)]
public string Text
{
 
}

时间: 2024-08-01 09:33:24

ASP.net控件开发系列之三的相关文章

ASP.net控件开发系列之二

"生死有序" "装装孙子" 上篇文章<开篇>说了不少空洞的理论,这篇文章我还是先说说"大而化之"的东西:1.ASP.net控件(包括页面本身)的生命期的细节:2.如何开始一个控件的编写. "生死有序" ASP.net处理程序在接收到一个用户的页面请求后,它是如何变戏法把一个鲜活的页面呈现给客户端的呢?它都做了哪些事?按什么顺序做的? 要说明这个问题,我们首先要明白,一个页面它本身也是一个Control.从设计模式的

ASP.net控件开发系列之五

TypeConverter 在本系列的上篇文章中,和大家控讨了控件开发与propertyGrid的关系,不知现在大家现在对propertygrid有没有一个较全面的了解,也不知大家有没有做个工程,把propertyGrid拉进去鼓捣鼓捣? "另起炉灶" 现在我们来思考一个问题:假于,propertygrid没有把属性和事件分成两个分页来显示,会产生什么效果? 那还用说,太乱了. 那如果你设计的控件有很多的属性,而一些关联性很强,或都是操作一个方面的,那么我们可以把它们分门别类,摆到一起

ASP.net控件开发系列之一 开篇

早段时间,同事之间很流行打CS,所以那段时间的问候变成了"今天你杀XX了吗?" 控件开发也许是程序员最能发掘自己创造力的一件事情吧?控件开发不仅要求你对当前的开发有一个较全面和略深的了解,而且也能促使你去了解开发环境的底层的东西.比方说我在开发控件的过程中就对reflect和MSIL产生了较深的兴趣,也许,在以后的一段时间里,我会尝试去做一个reflector,哈哈,很多事情都很难说地- "今天你写控件了吗?",也许在将来会成为中国.net程序员的一个日常用语,哈哈

ASP.net控件开发系列之四

属性与属性窗格 在上篇文章中,和大家探讨了属性和aspx文件中的HTML style 标签和文本的关系,遗漏了两点: 1.EnCodedInnerDefaultProperty和InnerDefaultProperty在使用中的区别,可能有些朋友对这个不是很清楚,EncodedInnerDefaultProperty属性是不允许内含控件对象的,比方说,声明了EncodedInnerDefaultProperty的DataList的Text属性是不允许你设为"<table ......>

ASP.net控件开发系列之七

ComponentEditor "第二选择" 上篇中,关于Editor说了那么多,完了吗?没有,上篇仅仅介绍了操作属性的UITypeEditor而已.还记得DataGrid的属性窗口的下方的"属性生成器..."吗? 开发系列之七-"> 当我们点击"属生生成器..."后,IDE弹出一个窗体,提供我们全方位的操作DataGrid属性的交互界面,这个界面比PropertyGrid提供更方便易用的,更符合DataGrid"国情&

ASP.net控件开发系列之六

UITypeEdit "我要红桃" 假如,你现在在做一个"扑克"控件,扑克牌有个属性--花色,你想在用户选择花色这个属性后,属性窗口呈现的不仅仅是文字,还有一个小小的花色图标来表示花色,"红桃"就有个小"红桃"图标在前面显示,"黑桃"就有个"黑桃"图标在前面显示,就像你选择其它控件的BackColor时,颜色前还有个小方色块来表示选定的颜色,多体贴人的设计啊. 现在,我们就来做这件事:

ASP.NET 控件开发系列之图片切换web控件_实用技巧

开发系列之图片切换web控件_实用技巧-">贴出来控件页面的代码. PicList.ascx 复制代码 代码如下: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="PicList.ascx.cs" Inherits="WebParts_PicList" %> <style type="text/css"&

ASP.net控件开发系列之八

怎样更改默认的控件分析逻辑 ------用PersistChildren(false)和ControlBuilder来定制ASP.net对控件标签对中的内容的分析 "我的地盘,我做主" 写到这里,我把foobar播放的音乐换成了周杰伦的歌,虽然不是"我的地盘". 我们来回顾一下第三篇中的一段代码: <asp:DropDownList id="DropDownList1" runat="server" Font-Bold=

ASP.NET控件开发基础(7)

上一篇写了控件样式的一些基础的东西,接着我们继续讨论asp.net控件开发的一些东西. 这次我们要讨论的是复合控件.本文无法一步到位完整介绍,因为讨论的篇幅比较大,所以分两次写,这次就先讲些基本概念吧,剩着的下次写. 好象复合控件网上已经有很多教程了,相信大家也看过很多.如果看过的朋友就当我再废话一便,没看过的朋友希望能给你带来帮助. 1.复合控件概念 复合控件跟用户控件有很多相似点,最大不同就是用户控件后缀为ascx,而复合控件编译后则为dll文件,还可以分发给大家使用,另外其他不同点还请参考