当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 谈谈HtmlControl与WebControl的区别与用途

ASP.NET
二级域名Cookie问题的解决方法
如何为asp.net网站项目添加子项目
asp.net用url重写URLReWriter实现任意二级域名
asp.net 序列化and反序列化演示
asp.net Timer的使用方法
AjaxControlToolKit DropDownExtender(下拉扩展控件)使用方法
AjaxControlToolKit CalendarExtender(日历扩展控件)的使用方法
让GridView只显示特定用户的数据的方法
让GridView只更新某些特定的数据的方法
ajaxControlToolkit中CascadingDropDown的用法说明
axp.net ScriptManager的简单用法
把程序集安装到全局程序集缓存中的步骤
引用全局程序集缓存内的程序集的方法
asp.net COOKIES需要注意的一点
asp.net UrlReWriter使用经验小结
页面导出为Excel的时间格式的问题
asp.net cookie清除的代码
Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
ASP.NET XmlHttp跨域访问实现代码
Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)

ASP.NET 中的 谈谈HtmlControl与WebControl的区别与用途


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 192 ::
收藏到网摘: n/a

Web控件和Html控件虽然好多功能相同并且长得很像
但是它们的内部实现机制是完全不一样的
Web控件要比Html控件执行效率要好
 
1. 使用起来也相当方便,举个简单的例子,例如Button的生成:
Html控件是将庞大控件集合全部弄到页面中,用到哪个功能,就设置一下属性,如下:
<input type=submit/button runat=server>
这样会占用相当大的控件资源
 
Web控件是将集成式的拆解成单功能的:
<asp:button id="btnOK" />
这样就可以节省不必要的控件所占用的资源了
 
2.Web控件具有回送功能,能够用ViewState维持控件的状态.
 Html控件则不能,当点击页面的操作,其状态就会丢失.
 可以做这样的一个实验:
 I. 分别建立两个文件: a.html b.aspx
 II.在a.html页面中加Html控件的RadioButton和一个button,
 在b.aspx中加Web控件的RadioButton和一个button
 III.a.html直接双击浏览器运行,b.aspx通过IIS运行
 IV.在a.html运行界面中,选中RadioButton,再单击Button按钮,会发现RadioButton会
 取消选中(丢失其状态),但在b.aspx页面执行同样的操作,RadioButton不会丢失,因为ViewState
 给它保存了状态. 您可以在运行界面点击浏览器菜单"查看"->“源文件",打开Html代码文件,
 找到加密后的ViewState,类似于下面:
 <input type="hidden" name="_VIEWSTATE" value="dDw0ajfmafmjfzzmj4"/>
 其实ViewState实现原理也是将一些信息放到隐藏的一个控件中,并且asp.net生成的ViewState信息
 
 是存储在客户端的
 这里要注意的一点是:
 只有当格式为*.aspx文件,并且控件具有属性:"runat=server"时,回送功能才能打开
 
 
3. Html控件与Web控件最大的区别是它们对事件处理的方法不同。对于Html窗体控件,
当引发一个事件时,浏览器会处理它。但对于Web控件,事件仅由浏览器生成,但浏览
器不会处理它,客户端要给服务器发个信息,告诉服务器处理事件。 不过有些事件,
比如:
 按下键/移动/鼠标等事件,Asp.net中没有这些事件
 (因为这些事件即时性强,服务器处理得不够及时),这时候Html控件就发挥其作用了,结合Html事件
 
 协助完成.
 
如下是一些Html常用的事件:
在浏览器上执行的Html控件事件:
 
单击时触发:
<INPUT type="button" value="Click Me" onclick="alert('Hi,你好!');">
 
鼠标弹起时触发:
<INPUT type="button" value="Click Me" onmouseup="alert('Hi,你好!');">
 
//悬浮在控件上方时触发
<INPUT type="button" value="Click Me" onmouseover="alert('Hi,你好!');">
 
//鼠标在控件上方移动时触发
<INPUT type="button" value="Click Me" onmousemove="alert('Hi,你好!');">
 
//双击控件时触发
<INPUT type="button" value="Click Me" ondblclick="alert('Hi,你好!');">
 
//当焦点在控件时,按键时触发
<INPUT type="button" value="Click Me" onkeypress="alert('Hi,你好!');">
 
//按键按下时触发
<INPUT type="button" value="Click Me" onkeydown="alert('Hi,你好!');">