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

ASP.NET
AspNetPager与Socut.Data使用方法
asp.net UpdaeProgress的简单用法
asp.net ajaxControlToolkit ValidatorCalloutExtender的简单用法
asp.net 简易生成注册码(数字+大小写字母)
asp.net中利用ashx实现图片防盗链代码
ASP.NET程序中常用代码汇总
ASP.NET 2.0/3.5中直接操作Gridview控件插入新记录
ASP.NET Ajax级联DropDownList实现代码
ASP.NET 2.0写无限级下拉菜单
asp.net Web Services上传和下载文件(完整代码)
asp.net DataGrid控件中弹出详细信息窗口
Asp.NET 多层登陆实现代码
利用Asp.Net回调机制实现进度条
ASP.NET Ref和Out关键字区别分析
Javascript调用Webservice的多种方法
.Net下的签名与混淆图文分析
.Net Compact Framework开发小技巧 推荐
.Net连接Oracle数据库的实现代码
js获取.aspx页面里面的服务器控件和.ascx中的服务器控件值
asp.net下 jquery jason 高效传输数据

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 182 ::
收藏到网摘: 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,你好!');">