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

ASP.NET
asp.net css注释的影响
ASP.NET与数据库相关技巧
关于HtmlForm控件
三色交替的下拉列表框
精通ASP.NET中弹出窗口技术
ASP.NET Forums与现有系统整合方案示例
ASP.NET操作IIS中的虚拟目录
DataGrid与SQL Server 2000数据绑定
如何让Web应用程序在Client端实现导出报表功能
如何保证web app中的Send Email线程稳定性
关于用ASP.Net识别远程主机服务器种类
ASP.NET中上传下载文件
提高ASP.NET性能的方法
asp.net StreamReader 创建文件
asp.net如何生成图片验证码(简单)
一个.net 压缩位图至JPEG的代码
简单的SQL Server数据库数据读取与数据操作
获取网站的RSS聚合到自己的网页
.Net程序中整站通用的防SQL注入函数
asp.net生成缩略图及给原始图加水印的函数

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


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