频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Asp.net服务器控件编程(2) 来做个热身运动吧

来源: 作者:lyamlf_net 出处:巧巧读书 2006-05-13 进入讨论组

        [以下的Control、WebControl分别位于System.Web.UI和System.Web.WebControls名称空间下]
创建Asp.net里的服务器控件和Windows Form的控件一样,也有几种方式:

        1、 用户控件(user control)
        2、 从Control、WebControl派生的自定义控件
        3、 从已有的Asp.net服务器控件扩展
        用户控件以.ascx为扩展名,并保存为文本文件,用户控件不像从Control和WebControl派生下来的服务器控件那样需要预编译,当用户控件在.aspx页面中使用的时候,页面解析器从.aspx文件中动态地生成一个类,并且将其编译到一个装配件中。其优点有:解决了代码复用,同时每一个用户控件有自己的对象模型,其编写语言和.aspx页面的语言无关。
        从已有的Asp.net服务器控件扩展,主要是对.net原生的服务器控件的功能加强以适用我们开发和最终用户的需要。
从Control、WebControl派生的自定义控件以编译过的类库形式部署的。
        上述的1和3在本系列中将不做讲解,在本系列中只讲解从Control、WebControl派生的服务器控件。
 我们要编写一个自定义控件,只要从Control、WebControl继承即可,Control已经实现了IComponent接口,而WebControl本身又是从Control上派生下来的,因而他们也支持组件的可视化设计,关于Control、WebControl的设计时可以查看我写的Component编程系列http://mapserver.cnblogs.com/category/53620.html。
        Render方法和HtmlTextWriter类,当我们从一个Control类派生一个Asp.net服务器控件时,Control类为我们提供了可重载的Render和一个HtmlTextWriter类型的实例,Render方法就是将服务器控件内容发送到提供的 HtmlTextWriter 对象,而HtmlTextWriter封装了HTML写文本流的功能函数。

Asp.net服务器控件编程(2) 来做个热身运动吧(图一)using System;
Asp.net服务器控件编程(2) 来做个热身运动吧(图一)
using System.Collections.Generic;
Asp.net服务器控件编程(2) 来做个热身运动吧(图一)
using System.Text;
Asp.net服务器控件编程(2) 来做个热身运动吧(图一)
Asp.net服务器控件编程(2) 来做个热身运动吧(图一)
namespace ClassLibrary1
Asp.net服务器控件编程(2) 来做个热身运动吧(图二)Asp.net服务器控件编程(2) 来做个热身运动吧(图三)
{
Asp.net服务器控件编程(2) 来做个热身运动吧(图五)    
public class Control1 : System.Web.UI.Control
Asp.net服务器控件编程(2) 来做个热身运动吧(图六)Asp.net服务器控件编程(2) 来做个热身运动吧(图七)    
{
Asp.net服务器控件编程(2) 来做个热身运动吧(图五)        
protected override void Render(System.Web.UI.HtmlTextWriter writer)
Asp.net服务器控件编程(2) 来做个热身运动吧(图六)Asp.net服务器控件编程(2) 来做个热身运动吧(图七)        
{
Asp.net服务器控件编程(2) 来做个热身运动吧(图五)            writer.Write(
"I'm here.");
Asp.net服务器控件编程(2) 来做个热身运动吧(图八)        }

Asp.net服务器控件编程(2) 来做个热身运动吧(图八)    }

Asp.net服务器控件编程(2) 来做个热身运动吧(图五)
Asp.net服务器控件编程(2) 来做个热身运动吧(图五)    
public class Control2 : System.Web.UI.WebControls.WebControl
Asp.net服务器控件编程(2) 来做个热身运动吧(图六)Asp.net服务器控件编程(2) 来做个热身运动吧(图七)    
{
Asp.net服务器控件编程(2) 来做个热身运动吧(图五)        
protected override void Render(System.Web.UI.HtmlTextWriter writer)
Asp.net服务器控件编程(2) 来做个热身运动吧(图六)Asp.net服务器控件编程(2) 来做个热身运动吧(图七)        
{
Asp.net服务器控件编程(2) 来做个热身运动吧(图五)            writer.Write(
"I'm here too.");
Asp.net服务器控件编程(2) 来做个热身运动吧(图八)        }

Asp.net服务器控件编程(2) 来做个热身运动吧(图八)    }

Asp.net服务器控件编程(2) 来做个热身运动吧(图九)}

Asp.net服务器控件编程(2) 来做个热身运动吧(图一)

        上面的代码里我们定义了一个Contro1和Control2,他们分别从Control和WebControl继承下来,那他们之间到底有什么样的本质区别呢?先看下面的效果:
Asp.net服务器控件编程(2) 来做个热身运动吧(图十) Asp.net服务器控件编程(2) 来做个热身运动吧(图十)
        从上面的效果我们不难看出他们之间有什么区别,WebControl类通过属性提供了对样式的支持,比如字体、高度、背景色等等。那我们什么时候来选择从Control派生,什么时候又选择从WebControl派生呢?如果控件要生成非可视化的元素或显示给非HTML客户端,就从Control派生,如SqlDataSource;如果要提供客户端生成可视化的HTML,那我们就从WebControl派生,如TextBox。

        参考:《Asp.net服务器控件与组件开发》、MSDN

图 文 结 合:http://www.qqread.com/xml-soap/n198110012.html 更多文章 更多内容请看FTP服务器双核服务器技术网站服务器的选型专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章