Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)delvpublished in(发表于) 2014/1/6 9:01:40 ASP.NET2.0服务器控件之创建自定义控件_[Asp.Net教程]
ASP.NET2.0服务器控件之创建自定义控件_[Asp.Net教程] 摘要 本文将详细讲解一个简单的自定义服务器控件的创建过程。通过这些内容,读者将了解利用Visual Studio 2005,创建和测试自定义服务器控件的基本方法。 注意:本文内容基于ASP.NET 2.0技术撰写,示例应用程序使用Visual Studio 2005进行开发。 创建一个简单的自定义服务器控件 创建自定义服务器控件的过程包括: (1)创建一个测试用Web站点应用程序; (2)为新建站点应用程序,新增一个Web控件库项目; (3)编写、编译和测试自定义服务器控件。 (1)创建一个测试用Web站点应用程序 利用Visual Studio 2005,创建Web站点应用程序的方法很多,例如,在本地文件系统中创建、在IIS支持下创建、在FTP站点中创建、在远程站点中创建等等。然而,无论如何,开发人员都应首先打开Visual Studio 2005,然后,单击"文件"菜单下"新建网站..."项目。这时,将弹出如下图1的对话框。
如图3所示,解决方案资源管理器中包括两个项目。一个是前文创建的Web站点项目,另一个是名为HelloMyControl的Web控件库项目,其中默认包括一个WebCustomControl1.cs文件。下面就可以开始编写、编译和测试自定义服务器控件了。
(3)编写、编译和测试自定义服务器控件 需要实现的自定义服务器控件WelcomeLabel功能很简单。类似于一个标准Label控件。WelcomeLabel控件从System.Web.UI.WebControls. WebControl继承,其中自定义了一个string类型的Text属性。当控件运行时,将显示Text属性值和当前用户名的组合文字。例如,将Text属性值设置为"您好",那么最终显示的是"您好,某某!"。开发人员可以用WelcomeLabel控件作为站点欢迎页面的一部分。 WelcomeLabel控件的实现代码包含在WebCustomControl1.cs文件中。该文件源代码如下所示。
代码说明之RenderContents方法: 通常,在从WebControl派生控件并呈现单个元素时,应重写RenderContents方法(而不是Render方法),以呈现控件标记中的内容。在呈现控件及其样式属性的开始标记之后,WebControl的Render方法将调用RenderContents。如果重写Render方法以写入内容,则控件将丢失生成到WebControl的Render方法中的样式呈现逻辑。 在源代码中,WelcomeLabel控件重写了继承的RenderContents方法以呈现Text属性及其他一些内容。传入RenderContents方法的参数是HtmlTextWriter类型的对象,它是具有呈现标记和其他HTML(和HTML变量)标记的方法的实用工具类。可能读者已经注意到:WelcomeLabel连续调用了HtmlTextWriter对象的Write方法,而不是先执行字符串串联,然后调用Write方法。这种做法可提高控件性能。字符串串联需要时间和内存来创建字符串,然后写入流。 代码说明之元数据属性标记: 如上代码所示,在WelcomeLabel类声明前包括以下3个元数据属性标记。 (1)AspNetHostingPermissionAttribute 它是代码访问安全属性。该属性使JIT编译器检查链接到WelcomeLabel的代码是否具有AspNetHostingPermission权限。所有的公共ASP.NET类均使用此属性标记。应将AspNetHostingPermissionAttribute应用于控件,以对部分受信任的被调用方进行安全检查。 (2)DefaultPropertyAttribute 它是设计时属性(Attribute),它指定控件的默认属性(Property)。在可视化设计器中,当页开发人员在设计图面上单击控件时,属性浏览器通常突出显示此默认属性。 (3)ToolboxDataAttribute 它用于指定元素的格式字符串。如果在工具箱中双击控件或将其从工具箱拖动到设计图面上时,该字符串将成为控件的标记。对于WelcomeLabel,该字符串创建此元素:
赞