在我们的项目开发中,由于ASP.NET的服务器控件功能有限,所以我们经常会自己定义特定的服务器控件,来满足开发中特定的业务要求。可见知道如何开发ASP.NET服务器控件是非常有必要的。
其实简单的实现ASP.NET服务器控件不是很难,以前园子中也有大牛介绍过相应的内容,这里站在巨人的肩膀上也来分享下开发ASP.NET服务器控件的方法和自己的一些体会。写给新手,高手绕过。
学习ASP.NET的服务器控件开发,个人认为最好的方式就是自己去实践,当然理论知识也是很重要的,但是如果我们只是看理论的知识,可能会被里面的一些概念闹糊涂,看着看着就睡着了,如果自己动手创做出一个自己的控件,效果就不一样了。
下面就通过实例创建一个简单的服务器控件:
首先我们创建一个类库工程SelfWebControl。在同一解决方案中我们在创建一个ASP,NET Web应用程序(用来测试我们得控件)
namespace SelfWebControl
{
public class ControlA:Control//Control类中定义了所有ASP.NET服务器控件共享的属性和方法
{
}
}
我将ControlA类继承Control类,Control类是.NET中所有控件的基类,其中包含了控件共有的属性和方法。
Control类
公共属性:
ClientID 获取由 ASP.NET 生成的服务器控件标识符。
Controls 获取 ControlCollection 对象,该对象表示 UI 层次结构中指定服务器控件的子控件。
EnableViewState 获取或设置一个值,该值指示服务器控件是否向发出请求的客户端保持自己的视图状态以及它所包含的任何子控件的视图状态。
ID 获取或设置分配给服务器控件的编程标识符。
NamingContainer 获取对服务器控件的命名容器的引用,此引用创建唯一的命名空间,以区分具有相同 Control.ID 属性值的服务器控件。
Page 获取对包含服务器控件的 Page 实例的引用。
Parent 获取对页 UI 层次结构中服务器控件的父控件的引用。
Site 获取有关服务器控件所属 Web 站点的信息(原文自MSDN,但是我认为不对,应该是指组件的“容器”站点,并非 web site)。
TemplateSourceDirectory 获取包含当前服务器控件的 Page 或 UserControl 的虚拟目录。
UniqueID 获取服务器控件的唯一的、以分层形式限定的标识符。
Visible 获取或设置一个值,该值指示服务器控件是否作为 UI 呈现在页上。
公共方法:
DataBind 将数据源绑定到被调用的服务器控件及其所有子控件。
Dispose 使服务器控件得以在从内存中释放之前执行最后的清理操作。
Equals(从 Object 继承) 已重载。确定两个 Object 实例是否相等。
FindControl 已重载。在当前的命名容器中搜索指定的服务器控件。
GetHashCode(从 Object 继承) 用作特定类型的哈希函数,适合在哈希算法和数据结构(如哈希表)中使用。
GetType(从 Object 继承) 获取当前实例的 Type。
HasControls 确定服务器控件是否包含任何子控件。
RenderControl 将服务器控件的内容输出到所提供的 HtmlTextWriter 对象中;如果已启用跟踪功能,则存储有关控件的跟踪信息。
ResolveUrl 根据传递给 TemplateSourceDirectory 属性的值,将相对 URL 解析为绝对 URL。
ToString(从 Object 继承) 返回表示当前 Object 的 String。