学习自定义控件的开发不仅可以使你开发出更灵活的系统更重要的是它可以使你加深对已有服务器控件的理解,得以更灵活的应用。
较之于asp,asp.net提供了更强大的功能,我比较喜欢它的代码分离技术和对诸如C#、VB.Net等强类型语言的使用,这是从开发者的角度来看
的,从用户的角度来看,会觉得它速度更快,运行更稳定,安全性也更高。不管怎么说,新技术的产生总会使许多人感到高兴,不过对开发者来说,坏消息是他们需
要学习更多新的知识。
Asp.net有了很多的改变,比如你可能会发现供我们操作的元素也和以前有了很大的不同,原来标准的HTML元素变成了现在的服务器控件,所谓服务器控
件,就是在服务器上运行,并可以映射到所有浏览器支持的标准 HTML 标记的控件,在你的web窗体中,凡是包含 runat="server"
属性声明的元素都叫做服务器控件(在VS.Net中的设计页面中,用一个小小的绿色箭头表示),你可以用原有的HTML元素并加上
runat=”server”属性使其变为一个服务器控件,这叫做HtmlControls,它可以直接映射到标准HTML标记;也可以使用.Net提供
的全新的WebControls,它比前者更抽象,功能也更加强大。不管采用哪一类控件,runat=”server”属性都将会使你可以以编程方式访问
这些元素。
这很容易理解,服务器控件就是在服务器端运行的控件,经过服务器端某些程序的解析再生成标准的HTML代码显示在我们的浏览器上,事实上,Web
Form之所以可以提供最大可能的浏览器兼容性也是基于此理。与通常的理解稍稍有些不同,在asp.net中,一个页面(Page),一个验证控件,一个
用户控件(User
Control),都可以看作是一个独立的控件,它来自于其它控件的组合。除了使用.Net提供的一系列控件外,你还可以到网上找一些免费的控件,
[url]www.asp.net[/url]中的Control Gallery一栏就收集了很多常用的Control。
在asp.net中,(传统意义上)可供你开发的控件实际上有两种:Custom Control 和 User Control。Custom
Control 是纵向的,是对系统本身控件的继承和扩充,在程序中以DLL文件形式存在,User Control
则是横向的,是对系统本身控件的组合,在系统中以.ascx为后缀名。这两种控件功能相同,都可以为开发人员提供可复用的可视化UI组件,相比之下前者具
有更大的灵活性,同时开发起来比较复杂,而后者容易开发,但可重用性就比较差。一般来说用户会先用User
Control来开发,只有当其不堪重用的时候才转而使用Custom Control。
事实上,用户自己开发Custom Control并不是一件很困难的事,只需要定义一个直接或间接从Control 派生的类并重写它的
Render
方法即可,System.Web.UI.Control与System.Web.UI.WebControls.WebControl两个类是服务器控件
的基类。 Control 类定义了所有服务器控件共有的属性、方法和事件。其中包括控制控件执行生命周期的方法和事件,以及
ID、UniqueID、Parent、ViewState 和 Controls(子控件集合)等属性。Control 没有用户界面 (UI)
特定的任何功能。如果创作的控件没有提供 UI,或者组合了其他呈现其自己的 UI 的控件,则从 Control 派生。 WebControl
类是从 Control 派生的,并为 UI 功能提供附加的属性和方法。这些属性包括
ForeColor、BackColor、Font、BorderStyle、Height 和 Width。WebControl 是
ASP.NET 中 Web 服务器控件系列的基类。如果控件呈现 UI,则从 WebControl 派生。
可以重写从基类继承的属性、方法和事件,并可以将新的属性、方法和事件添加到自定义控件中,所前所述,我们使用重写Render方法来实现对HTML代码
的输出。Render 方法采用 System.Web.UI.HtmlTextWriter 类型的参数。控件要发送到客户端的 HTML
作为字符串参数传递到 HtmlTextWriter 的 Write
方法。下面我们使用VS.Net来开发一个简单的自定义控件(使用VS.Net的原因是为了方便开发者调试,在正式开发中我们经常使用的也是
VS.Net)。
首先新建一个空白解决方案,然后为其添加两个项目,一个名为MyControls的Web控件库项目和一个叫做Web的Web应用程序项目,后者用于测试我们开发出的控件。
在Web项目上点击右键,选择依赖项,使项目Web取决于MyControls,接着再为Web项目添加MyControls的引用(编译成的
MyControls.dll文件后被copy到Web目录的Bin文件夹下,你可以在任何地方使用这个MyControls.dll文件)。
在MyControls项目中添加一个Web自定义控件并命名为MyControl.cs,接着在Web项目中的WebForm1.aspx文件首行添加如下代码(用于向页面注册此控件):
<%@ Register TagPrefix="ccs" Namespace="MyControls" Assembly="MyControls" %>
在<Form>标记之间添加如下代码(添加此控件到页面上):
<ccs:MyControl id="Control1" runat="server" Text="Hello World"></ccs:MyControl>
OK,一个带有Text属性的自定义控件已经完成了,现在就可以运行它并观看效果了。
这个控件的结果仅仅是将一行文本输出到浏览器并显示出来,但是我们平时所用到的控件,小到如Label,大到如DataGrid,都是基于这一原理开发出来的。接着我们看一下这个自定义控件源文件(MyControl.cs)的组成。
分享到:
相关推荐
asp.net 自定义控件 上图文件控件 带有进度和时间 高效率
ASP.NET自定义控件开发实例教程,通过一系列具体的例子展示了如何创建从简单的到复杂的数据绑定控件
ASP.NET自定义控件实例教程.pdf
一段ASP.NET自定义控件源代码,里面是一个简单的自定义控件,包含源代码.
asp.net c#自定义控件 代码例子
asp.net 自定义控件 抽屉控件asp.net 自定义控件 抽屉控件
一款自定义的控件,通过操作txt,html格式的文件达到repeater控件的效果,在CSS使用方面比repeater控件更易于操作,输出到页面后完全是html的标签,如果想在输出过程中加入服务器控件的话,改案例还无法达到要求,...
ASP.NET自定义控件组件开发 ASP.NET自定义控件组件开发 ASP.NET自定义控件组件开发
自定义等待服务器控件,提示和确认控件,进度条控件等.
ASP.NET自定义控件系列文章 前言 第一天 简单的星级控件 第二天 带有自定义样式的星级控件 第三天 使用控件状态的星级控件 第四天 折叠面板自定义控件 第五天 可以评分的星级控件 第六天 可以绑定数据源的...
ASP.NET自定义控件 真正可以评分的星级控件,实现动态评分的效果
asp.net 自定义控件 CalendarTextBox
ASP.NET自定义控件教程.pdf
纯属个人作品。供ASP.NET爱好者学习之用。请勿用于商业用途。这是一个简易版的提示消息控件。。
ASP.NET自定义控件教程 介绍了什么是 自定义控件
asp.net GridView自定义控件源码,美化控件。
asp.net自定义控件EeekSoft.Web.PopupWin.zip能够帮你更好的做好网站不必自己写
Asp.net 2.0 自定义控件开发简单实现代码
asp.net 自定义控件中的嵌入脚本图片等资源的一些总结 asp.net 自定义控件中的嵌入脚本图片等资源的一些总结