ASP.NET自定义控件开发(个人总结)

1、创建自定义控件有两种方式:

1) 在WEB项目中的App_Code文件下创建自定义控件;

2)添加单独的自定义控件类库项目,并创建自定义控件。

其中,自定义控件类继承自System.Web.UI.WebControls.WebControl类或标准控件类(如Label)。

添加单独的类库项目,在设计用户自定义控件时更加灵活,可以单独添加内嵌的资源文件,如JS、CSS方件和图片文件等。

2、创建自定义控件的过程:

选择解决方案 -〉点击右键,选择添加新建项目 -〉添加C#类库项目 -〉选择新建的类库项目 -〉点周右键,选择添加新建项 -〉选择Web模板 -〉选择ASP.NET 服务器控件 -〉点击OK,完成创建

具体过程如下图:

3、添加或修修改自定义控件类的特性,如下图:

其中,

DefaultProperty为DefaultPropertyAttribute,命名空间为System.ComponentModel, 此特性是设计时特性,它指定控件的默认属性。 在可视化设计器中,当页开发人员在设计图面上单击控件时,属性浏览器通常突出显示此默认属性

ToolboxData为ToolboxDataAttribute,命名空间为System.WebUI,此特性指定元素的格式字符串。 如果在工具箱中双击控件或将其从工具箱拖动到设计图面上时,该字符串将成为控件的标记。WebCustomControl1对应自定义控件的类名,从工具箱中把自定义控件拖放到页面上,将显示为该格式。

4、添加属性:

下面定义一个Age属性。

其中,
BindableAttribute . 此特性指定将属性绑定到数据对可视化设计器是否有意义。 例如,在 Visual Studio 中,如果属性标记为 Bindable(true),则该属性可显示在“数据绑定”对话框中。 如果属性没有使用此特性标记,则属性浏览器会推断其值为 Bindable(false)。

CategoryAttribute . 此特性指定如何在可视化设计器的属性浏览器中对属性进行分类。 例如,当页开发人员使用属性浏览器的分类视图时,Category("Appearance") 将告知属性浏览器在“外观”类别中显示属性。 可以指定一个对应于属性浏览器中的现有类别的字符串参数,也可以创建自己的类别。

DescriptionAttribute . 此特性指定属性的简短描述。 在 Visual Studio 中,属性浏览器将在“属性”窗口底部显示选定的属性的描述。

DefaultValueAttribute . 此特性指定属性的默认值。 此值应与从属性访问器 (getter) 返回的默认值相同。 在 Visual Studio 中,DefaultValueAttribute 特性允许页开发人员通过在“属性”窗口中显示快捷菜单,然后单击“重置”按钮将属性值重置为其默认值。

LocalizableAttribute . 此特性指定本地化属性对可视化设计器是否有意义。 当某属性标记为 Localizable(true) 时,可视化设计器会在将属性序列化为资源时包含该属性值。 对控件轮询可本地化的属性时,设计器会将此属性值保存到非特定于区域性的资源文件或另一个本地化源中。

 

 5、重写基类属性

TagKey属性:自定义控件呈现到浏览器的HTML标签,默认为Span

       protected override HtmlTextWriterTag TagKey
        {
            get
            {
                return HtmlTextWriterTag.Div;
            }
        }

 2)

6、引用外部资源:

js文体:

a.在命名空间上添加:

[assembly: WebResource("WebComboBox.WebComboBox.js", "application/x-javascript")]

注意,JS文件的路径为:自定义控件项目默认命名间+JS文件所在文件夹+JS文件名

b.编写呈现完成事件处理方法:

private void Page_PreRenderComplete(object sender, EventArgs e)
        {
            Page.ClientScript.RegisterClientScriptResource(typeof(WebComboBox), "WebComboBox.WebComboBox.js");
        }

c.重写OnPreRender方法,引用方法Page_PreRenderComplete:

 this.Page.PreRenderComplete += new EventHandler(Page_PreRenderComplete);

可在OnPreRender中添加JS脚本:

 StringBuilder js = new StringBuilder();
 js.Append("<script language=\"javascript\" type=\"text/javascript\">");
 js.Append(string.Format("initComboBox(\"{0}\", \"{1}\", \"{2}\");", txt.ClientID, list.ClientID, pnl.ClientID));
 js.Append("</script>");
 Page.ClientScript.RegisterStartupScript(typeof(WebComboBox), this.ID, js.ToString());

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值