mapserver

简单的生活,简单的编程(Code Snippet Storage 2 进行中... ...)。

导航

统计

公告

未经许可,请不要转载我的文章。

与我联系

搜索

 

常用链接

留言簿

我参与的团队

随笔分类(13)

文章分类(21)

My Links

积分与排名

最新评论

Asp.net服务器控件编程(1) 开篇、基础

        在园子里也大概搜了下,thinhunan写过一个系列《今天你写控件了吗》,写的也很不错。但是我还是下定决心写这个系列的文章,以完成Component和Control的一个完整的系列。
        有朋友给我说:Asp.net之所以方便和强大,关键是它有一组强大的Asp.net服务器控件,在Asp.net中我们经常会遇到Html标注,Html服务器控件、Web控件和Asp.net服务器控件等等,你能区分出它们之间的关系吗?那我们首先来区分下Asp.net开发中经常用到的几个概念,Html标注、Html服务器控件、Web控件和Asp.net服务器控件,
        Html标注:就是我们传统所说的Html 超文本标记语言,这些Html标注在以往的静态网页或网页里即可满足我们的需求,Html标注并没有办法利用程序直接来控制它们的属性、使用方法和接收事件,我们必须另外学习其它如JavaScript 等程序语言才得以控制。如:<input id="Button1" type="button" value="button" />。
        Html服务器控件:就是上面我们讲的Html标注的属性里加上runat="server"所构成的控件,至于Html标注和Html服务器控件之间的区别很明显,Html服务器控件是运行于服务器端,Html标注是运行于客户端。具体来说:当ASP.NET 网页执行时,会检查标注有无runat 属性,如果标注没有设定,那么Html标注就会被视为字符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释;如果Html标注有设定runat="server" 属性,Page 对象会将该控件放入控制器,服务器端的代码就能对其进行控制,等到控制执行完毕后再将Html服务器控件的执行结果转换成Html标注,然后当成字符串流发送到客户端进行解释。如:<input id="Button1" type="button" value="button" runat=”server” />。
        Asp.net服务器控件:也叫Web服务器控件,Asp页面中用来定义Web应用程序用户界面的组件,是Web Forms编程模型的基本元素,它会依Client的情况生产一个或者多个Html控件,而不是直接描述Html元素。如<asp:Button ID="Button2" runat="server" Text="Button" />。那它和Html服务器端控件有什么区别,以及它有什么新的特点呢?
        1、 Asp.net服务器控件提供更加统一的编程接口,如每个Asp.net服务器控件都有Text属性。
        2、 隐藏客户端的不同,这样程序员可以把更多的精力放在业务上,而不用去考虑客户端的浏览器是ie还是firefox,或者是移动设备。
        3、 Asp.net服务器控件可以保存状态到ViewState里,这样页面在从客户端回传到服务器端或者从服务器端下载到客户端的过程中都可以保存。
        4、 事件处理模型不同,Html标注和Html服务器控件的事件处理都是在客户端的页面上,而Asp.net服务器控件则是在服务器上,举例来说:
        <input id="Button4" type="button" value="button" runat="server"/>是Html服务器控件,此时我们点击此按钮,页面不会回传到服务器端,原因是我们没有为其定义鼠标点击事件。
        <input id="Button4" type="button" value="button" runat="server" onserverclick="test" />我们为Html服务器控件添加了一个onserverclick事件,点击此按钮页面会发回服务器端,并执行test(object sender, EventArgs e)方法。
        <asp:Button ID="Button2" runat="server" Text="Button" />是Asp.net服务器控件,并且我们没有为其定义click,但是我们点击时,页面也会发回到服务器端。
        由此可见:Html标注和Html服务器控件的事件是由页面来触发的,而Asp.net服务器控件则是由页面把Form发回到服务器端,由服务器来处理。
        以上是我们对Asp.net里的控件进行了简单的介绍,我们通常说的Web控件也就是指Asp.net服务器控件,同时本教程也是主要讲Asp.net服务器控件。
        另:Html服务器控件位于System.Web.UI.HtmlControls,Asp.net服务器控件位于System.Web.UI.WebControls。
       
        参考:《Asp.net服务器控件与组件开发》

posted on 2006-04-26 23:14 mapserver 阅读(2734) 评论(14)  编辑 收藏 网摘 所属分类: Asp.net 服务器端控件

评论

#1楼 2006-04-27 09:15 baoli[未注册用户]

楼主总结的很好,但是把“Html标注”叫作“Html控件”有点让人误解。
Html是web的一种通用格式,把它的元素当成控件好像说不通呢~
  回复  引用    

#2楼[楼主] 2006-04-27 09:54 mapserver      

@baoli
谢谢你的评论。
  回复  引用  查看    

#3楼[楼主] 2006-04-27 10:07 mapserver      

@baoli
再次感谢你给我提出的意见,我自己也仔细的想了想,觉得你说的很有道理,所以把文章进行了修改。
  回复  引用  查看    

#4楼 2006-04-27 11:43 kuku[未注册用户]

如果标注没有设定,那么Html标注就会被视为字符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释

其实一个 HTML 页面的所有 HTML 代码都会被封成一个个控件的。
如下面一段 HTML 代码:

<html>
<head>
<title></title>
</head>

上面这段代码其实会封装成一个 LiternalControl 控件。
  回复  引用    

#5楼 2006-04-27 12:07 双鱼座      

带runat=server的html标记也不能称为html控件,应该称为html服务器控件。html控件是IE特有的一种对客户端脚本语言的封装方式,一般其扩展名为.htc。另外,Web控件与Asp.net服务端组件也是两个不完全相同的概念。既然你提到《Asp.net服务器控件与组件开发》一书,建议你仔细参考一下书中对这些概念的定义。
  回复  引用  查看    

#6楼 2006-04-27 12:38 THIN      

嗯,如果这些相同方向的文章能互为补充而不是互为重叠就太好了。
建议多介绍Asp.net2.0环境下的控件开发的特点。
  回复  引用  查看    

#7楼 2006-04-27 21:48 求学者[未注册用户]

to baoli
“Html标注”为什么就不是“Html控件”呢?
在ASP.NET中不能以对象化去访问“Html标注”,并不代表“Html标注”不能被对象化,IE在装入一个网页时,就会对“Html标注”进行对象化。

专业名词我懂得少,不好意思,只是<span id="mySpan"></span>对我来说就是“控件”,而我也很经常需要用到这样的“控件”。
  回复  引用    

#8楼[楼主] 2006-04-27 23:07 mapserver      

@求学者
你好,谢谢你的回复,我到msdn查了下,加了runat="server"的Html标注,ms的定义就为Html控件,由其名称空间也能看出,System.Web.UI.HtmlControls.
  回复  引用  查看    

#9楼 2006-04-28 10:55 baoli[未注册用户]

楼上很多牛人呢。呵呵呵
其实我觉得名称的统一是很重要的,因为这样可以保证我们有统一的交流语言。
为什么把HTML称为控件不妥?
什么是控件?在我的理解,控件就是一组具有特定相同的对外接口,并被封装的逻辑。
明显HTML不具有这样的特性。之所以叫HTML为标注,是因为它在服务器端只是以文本的形式存在,没有动态特性和什么逻辑。
那可能有人会说,服务器端没有动态特性,客户端会有动态特性,所以把它称为控件也合理啊?问题是HTML本身就是在客户端也是没有动态特性的,之所以能通过js来动态处理它,是因为浏览器都提供了DOM来处理HTML,这也就是所谓的DHTML。
HTML本来就是一种通用的标签格式而已(HTML的标准中也是这样称呼自己的),但是它在js和asp.net里面用起来像控件,仅仅是因为它在不同的语境给扩展了而已。具体是怎么个扩展看看相关资料就清楚了。
  回复  引用    

#10楼[楼主] 2006-04-28 12:55 mapserver      

@baoli
你好,感谢你的再次回复。
你对Html这块有很深的了解,不知你是否能写篇有关的文章呢?
  回复  引用  查看    

#11楼 2006-07-28 13:04 啊啊[未注册用户]

赞一个,不错.   回复  引用    

#12楼 2006-09-08 15:53 白月光[未注册用户]

都是高手,讨论这么激烈,好现象:)   回复  引用    

#13楼 2006-09-19 09:44 邓古谚[未注册用户]

不晓得MapServer能不能讲一下 用户控件与服务器控件和自定义控件的区别
很糊涂 还有一个问题想请教

我想做个用户控件 就是用MultiView实现象CS中TabControl一样的功能
怎么实现?
我的问题在http://community.csdn.net/Expert/topic/5031/5031002.xml?temp=.561413
望帮忙!
  回复  引用    

#14楼 2006-09-19 09:52 邓古谚[未注册用户]

上面那个用户控件与服务器控件和自定义控件的区别 问题取消!
看了你的第二篇看到了你的介绍
我的那个问题望帮我解决一下 或发点资料给我 谢谢
42567628@qq.com

  回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 386078 vitnpA77+zo=



相关文章:

相关链接: