简单的生活,简单的编程(Code Snippet Storage 2 进行中... ...)。
未经许可,请不要转载我的文章。
[以下的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写文本流的功能函数。
上面的代码里我们定义了一个Contro1和Control2,他们分别从Control和WebControl继承下来,那他们之间到底有什么样的本质区别呢?先看下面的效果: 从上面的效果我们不难看出他们之间有什么区别,WebControl类通过属性提供了对样式的支持,比如字体、高度、背景色等等。那我们什么时候来选择从Control派生,什么时候又选择从WebControl派生呢?如果控件要生成非可视化的元素或显示给非HTML客户端,就从Control派生,如SqlDataSource;如果要提供客户端生成可视化的HTML,那我们就从WebControl派生,如TextBox。 参考:《Asp.net服务器控件与组件开发》、MSDN
posted on 2006-05-06 00:43 mapserver 阅读(2174) 评论(10) 编辑 收藏 网摘 所属分类: Asp.net 服务器端控件
WebControl也是继承自Control的,建议你按每级class所担当的职责来讲,而不是让人来教条地记住"什么时候从什么Class派生"。Control的职责就是对象实例(Control树体系)的管理,WebControl的职责才是呈现。 回复 引用 查看
@双鱼座 我想我写的 “如果控件要生成非可视化的元素或显示给非HTML客户端,就从Control派生,如SqlDataSource;如果要提供客户端生成可视化的HTML,那我们就从WebControl派生,如TextBox。” 比你写的 “Control的职责就是对象实例(Control树体系)的管理,WebControl的职责才是呈现。” 更好理解吧。 回复 引用 查看
晕倒~~~我又没有你这个能耐写这个东西,我也没有要求你用我的原句来替换,我只是觉得应该替换而已。你不接受也就拉倒。 记得上次有位网友讲Provider模式的时候,没有讲透Microsoft为什么要设计一个Provider的抽象基类,然后又设计一个与Provider任务相关的基类,最后才是Provider的实现。听从似乎觉得第一个基类可有可无,事实并非如此。Provider的抽象基类解决的是读取配置的问题,虽然与具体Provider毫无关系,但所有的Provider都必须使用配置。我的原意也仅仅是让人知其然并知其所以然,因为多花的代价是非常少的。如果仅仅只是提供一些泊来的“经验”,估计MSDN已经足够权威。 回复 引用 查看
@双鱼座 感谢你的评论,众口难调,对你的评论我不着任何评价。 回复 引用 查看
容易让人看的明白的才是最好的,泛泛得说反而不好,喜欢这样的风格 回复 引用 查看
是的,严重同意楼主的意见,这写的已经很不错了,请大家看看文章的优点,不是来挑毛病的。 回复 引用
简单明了` 回复 引用
双鱼座 说的有道理,但是楼主也有自己的风格.楼主能创造出自己的风格是值得学习和鼓励的,我这票投给楼主了:) 回复 引用
主持 楼主 回复 引用
支持楼主~ 我想楼主写这个系列的意义在于帮助我这样的新手快速入门.搭起自定义控件开发的思路.这一阶段最重要的就是易于理解快速上手. 至于高手想提高,需要概念严谨的描述.就应该自己去买书看了吧. 回复 引用
昵称: [登录] [注册]
主页:
邮箱:(仅博主可见)
验证码: 看不清,换一个
评论内容:
登录 注册
[使用Ctrl+Enter键快速提交评论]
Powered by: 博客园 Copyright © mapserver