Web服务器控件、Html服务器控件和Html控件

  这是关于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控件的标签: Html服务器控件的标签: Html服务器控件其实就是Html控件的基础上加上runat=”server”所构成的控件 Web服务器控件的标签: 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中的场面短时间内是不可能消失地。

 

转载:http://chaoqunz.blog.163.com/blog/static/61548777200971711389200/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值