ASP.Net的Web服务器控件、Html服务器控件和Html控件
来源:互联网 发布:詹姆斯奥运会数据 编辑:程序博客网 时间:2024/05/11 20:37
这是关于ASP.Net常被问到的一个问题,很老很老的概念,但也是一个比较容易一知半解的问题。自问了一下,似乎揣着明白说不清楚,于是做点功课整理一下。
首先,为什么会有Web服务器控件、Html服务器控件和Html控件
Html控件无需多说,最常用的控件,ASP时代的唯一选择,世界开始的时候它就在那。当微软推出.Net后,为了提供ASP.Net Web Form开发以和Win Form开发相似的开发体验,推出了Web服务器控件(Server Control),又称ASP.Net服务器控件。而Html服务器控件(Html Server Control),则可以看做是为了向下兼容,便于原本基于ASP系统的移植而推出的一种介于Html控件和Web 服务器控件的权宜产物。
Web服务器控件、Html服务器控件和Html控件的区别
- Html控件的标签:<input id="Button" type="button" value="Button" />
- Html服务器控件的标签:<input id="Button" type="button" value="Button" runat="server" />
- Html服务器控件其实就是Html控件的基础上加上runat="server"所构成的控件
- Web服务器控件的标签:<asp:Button ID="Button" runat="server" Text="Button"/>
- Web服务器控件会根据情况在浏览器端产生一个或多个对应的Html标签。
- Html服务器控件位于System.Web.UI.HtmlControls
- Web服务器控件位于System.Web.UI.WebControls
- Web服务器控件与Code Behind的Class文件相结合,提供了包含属性、方法和事件的完整对象模型。
- Html控件不能在服务器端控制,只能在浏览器端通过javascript等脚本语言操作。
- Html服务器控件设定了runat="server" 属性后,页面对象会将该控件载入控制器,服务器端的代码就能对其进行控制。
- Html服务器控件在页面执行完毕后会被转换成Html标注,然后当成字符串流发送到浏览器端,浏览器端的脚本能够进行操作。
- Web服务器控件的操作则是由页面把Form发回服务器,然后完全由服务器端代码处理。
- Html控件的事件处理发生在浏览器端,除非Submit,否则不会发生Postback
- Html服务器控件的事件处理发生在浏览器端。
- Html服务器控件如果要Postback到服务器端,调用服务器端的方法,需要添加onserverclick之类的事件。
- Web服务器控件部分默认为AutoPostback,或者可以设置AutoPostback。
- 在产生Postback或是重新生成页面时,Web服务器控件自动保存状态到ViewState。
- Html控件和Html服务器控件需要自己编码实现。
Web服务器控件、Html服务器控件和Html控件的优缺点
- Html控件和Html服务器控件需要编码以保持浏览器兼容。
- Web服务器控件能够检测浏览器的兼容性,保持表现的一致。
- Html服务器控件通过为Html控件添加runat="server"以实现ASP程序的移植。
- 将ASP程序移植成使用Web服务器控件的ASP.Net程序相当于重写新的应用。
- Html控件和Html服务器控件是标准控件,能够用浏览器端脚本语言操作。
- 使用Web服务器控件提供的对象模型,能够得到和Win Form类似的编程体验,而且无需再学习不同的脚本语言。
- Web服务器内部的代码并不开放,你无法获得比较直接的控制。
小结
个人认为,Html服务器控件作为一个过渡的实现,虽然能够兼顾浏览器端和服务器端,终究是一个奇怪的存在,尽量少使用为妙。从微软的角度,良好封装的Web服务器控件提供了大量的便利,同时Web Form和Win Form开发模式的差异使得相互的经验能够互通,当然是多使用Web服务器控件为好。不过Web服务器控件的缺点是占用服务器资源,页面Postback过多(Ajax啊Ajax)。所以现实是存在的就是合理的,Html还是要会地,Javascript当然是要好好学地,Web开发各种奇奇怪怪的标签共存于Page中的场面短时间内是不可能消失地。
参考资料
《html控件、html服务器控件和web服务器控件的区别》 (原出处不详,请Google)
<Difference Between ASP.NET Server Controls,HTML Server Controls and HTML Intrinsic Controls>
原文链接 http://humblepg.com/chs/2009/06/asp-dot-net-web-server-control-html-server-control-html-control.html
- ASP.Net的Web服务器控件、Html服务器控件和Html控件
- ASP.Net的Web服务器控件、Html服务器控件和Html控件
- ASP.NET HTML服务器控件和WEB服务器控件的区别
- ASP.NET HTML服务器控件和WEB服务器控件的区别
- ASP.NET HTML服务器控件和WEB服务器控件的区别
- ASP.NET HTML服务器控件和WEB服务器控件的区别
- 在ASP.NET 中,Javascript 分别获取Html服务器控件和Web服务器控件的方法
- 【ASP.NET】——Web服务器控件、HTML服务器控件
- Asp.net服务器控件和Html服务器端控件的区别
- HTML控件、HTML服务器控件和Web控件的区别
- html、html服务器控件和web服务器控件的区别
- html、html服务器控件和web服务器控件的区别
- html、html服务器控件和web服务器控件的区别
- html服务器控件和web服务器控件
- ASP.NET 2.0中的Web和HTML服务器控件
- ASP.NET 2.0中的Web和HTML服务器控件
- HTML服务器控件与ASP.NET服务器控件的区别
- asp.net服务器控件与html服务器控件的区别
- jsp和servlet的关系
- 转载:网络工程师复习题—内存容量计算问题
- ZOJ 2008 Gnome Tetravex 搜索(DFS)
- CCNP考试大纲(中文)
- .NET命名空间使用介绍
- ASP.Net的Web服务器控件、Html服务器控件和Html控件
- 色彩理论和图层混合模式
- 内存大了,但是系统没觉得快,怎么优化内存呢?
- SQL server 2005 开始安装后sa无法登录问题的解决方法
- T60几个问题解决
- 关于本科学习GIS的一点感悟,不知道自己该干些什么的学弟学妹们可以借鉴一下……
- 使用WIN32 API CreateProcess()以无窗口方式创建DOS程序
- C#命名规则和风格(收集)
- 周鸿祎:不得不说的话