设置自定义ASP.NET服务器控件TagPrefix的几种方法
来源:互联网 发布:深圳知豆共享汽车 编辑:程序博客网 时间:2024/06/06 20:43
这两天看《道不远人-----深入解析ASP.NET2.0控件开发》这本书,看完第二章内容后,想总结下“设置自定义ASP.NET服务器控件TagPrefix的几种方法”,以便以后查阅,以下面code编写的控件为例,由于重点不是控件编写,所以写了个非常简单的控件,姑且叫它EmailInput
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Text; 5using System.Web; 6using System.Web.UI; 7using System.Web.UI.WebControls; 8 9namespace ServerControl10{11 [ToolboxData("<{0}:EmailInput runat=server></{0}:EmailInput>")]12 public class EmailInput : CompositeControl13 {14 protected RegularExpressionValidator _regValidator;15 protected RequiredFieldValidator _rqrValidatator;16 protected TextBox _input;17 protected override HtmlTextWriterTag TagKey18 {19 get20 {21 return HtmlTextWriterTag.Div;22 }23 }24 protected override void CreateChildControls() 25 {26 Controls.Clear();27 _input = new TextBox();28 _input.ID = "txtEmail";2930 _rqrValidatator = new RequiredFieldValidator();31 _rqrValidatator.ID = "rqvEmail";32 _rqrValidatator.ErrorMessage = "请输入邮件地址";33 _rqrValidatator.Text = "*";34 _rqrValidatator.Display = ValidatorDisplay.Dynamic;35 _rqrValidatator.ControlToValidate = _input.ID;3637 _regValidator = new RegularExpressionValidator();38 _regValidator.ID = "revEmail";39 _regValidator.Display = ValidatorDisplay.Dynamic;40 _regValidator.ErrorMessage = "邮件格式错误";41 _regValidator.Text = "*";42 _regValidator.ValidationExpression = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";43 _regValidator.ControlToValidate = _input.ID;4445 this.Controls.Add(_input);46 this.Controls.Add(_rqrValidatator);47 this.Controls.Add(_regValidator);4849 ChildControlsCreated = true;50 }51 }52}方法一、在Web.config中配置,具体做法为:在Web.config文件的System.web节中添加如下代码
Code1<pages>2 <controls>3 <add assembly="ServerControl" namespace="ServerControl" tagPrefix="sc"/>4 </controls>5</pages>
说明:assembly表示控件所在的程序集名称,namespace表示控件的命名空间,tagPrefix就是我们所要设置的项了
方法二、在使用该控件的页面添加<%Register%>指令,如下
Code1<%@ Register assembly="ServerControl" namespace="ServerControl" tagprefix="sc" %>
说明:assembly表示控件所在的程序集名称,namespace表示控件的命名空间,tagPrefix就是我们所要设置的项了
方法三、通过装饰Attribute来指定tagPrefix,例如在控件类添加如下Attribute
Code[assembly: TagPrefix("ServerControl", "scsc")]namespace ServerControl{ [ToolboxData("<{0}:EmailInput runat=server></{0}:EmailInput>")] public class EmailInput : CompositeControl {说明:即使这样定义了,每个页面也都要添加<%Register%>指令,这样只是提供了统一的tagPrefix,实质上还是第二种方法
方法四、在控件项目中添加属性文件"Assembly.cs"中添加如下代码来自定义控件的前缀:
Codeusing System.Reflection;using System.Runtime.CompilerServices;using System.Runtime.InteropServices;using System.Web.UI;[assembly: TagPrefix("ServerControl","scsc")]
说明:即使这样定义了,每个页面也都要添加<%Register%>指令,这样只是提供了统一的tagPrefix,实质上还是第二种方法
最后对上面的四种方法进行说明:
- 在Web.config中进行自定义是属于应用程序级别的定义,只注册一次即可对整个应用程序有效。其他三种方法都得在引用该控件的页面添加<%Register%>指令
- asp.net定义tagPrefix的检测顺序是:assemblyInfo.cs---->控件中的attribute装饰----->webconfig中的配置,也就是说,如果这几种方法您都设置了,那么asp.net 将会采用webconfig的设置方式!相信这也是asp.net覆盖的简单道理了!
- asp.net的自带控件采用了第一种方法,即在 web.config中进行了配置,将tagPrefix配置成了asp,如果您看着不爽,可以改掉它。
以上纯属看书心得,如有错误,恳请您指正!
- 设置自定义ASP.NET服务器控件TagPrefix的几种方法
- 设置自定义ASP.NET服务器控件TagPrefix的几种方法
- 设置自定义ASP.NET服务器控件TagPrefix的几种方法
- 设置自定义ASP.NET服务器控件TagPrefix的几种方法
- 设置自定义ASP.NET服务器控件TagPrefix的几种方法 (博客园)
- 怎样设置服务器控件的TagPrefix
- ASP.NET 自定义服务器控件的使用
- ASP.NET遍历控件的几种方法
- asp.net自定义错误处理页面的几种方法
- ASP.NET自定义服务器控件
- ASP.NET 自定义服务器控件
- asp.net用户自定义控件的方法
- asp.net 页面编码 设置的几种方法
- asp.net 页面编码 设置的几种方法
- ASP.net 自定义控件的两种实现方法
- 如何定制Web服务器控件的TagPrefix 而不是出现cc1
- 如何定制Web服务器控件的TagPrefix 而不是出现cc1
- 如何定制Web服务器控件的TagPrefix 而不是出现cc1
- Eclipse中Android项目的目录结构
- 又见木村拓哉
- bitmap 删除字符串中重复字符
- 80386实模式编程模型
- 将一个文件的内容写入到另一个文件
- 设置自定义ASP.NET服务器控件TagPrefix的几种方法
- hello csdn
- 回家
- hdu2819 Swap
- Java Observer类
- 80386保护模式编程模型
- 手动进行释放内存的API
- jquery 实现input宽度自适应
- Oracle 高级SQL