1)前者可以触发服务器控件特有的事件,后者只能通过回递的方式触发服务器上的页面级事件。
2)输入到前者中的数据在请求之间可以维护(即具有状态管理功能),而后者无法自动维护数据,只能使用页面级的脚本来保存和恢复。
3)前者可以自动检测浏览器并调整到恰当的显示,而后者没有自动适应功能,必须在代码中手动检测浏览器。
4)每个服务器控件都具有一组属性,可以在服务器端的代码中更改控件的外观和行为,而后者只有HTML属性。
如果某些控件不需要服务器端的事件或状态管理功能时,可以选择HTML控件,这样可以提高应用程序的性能。
一个HTML服务器控件的属性集,与对应标签的常用属性集匹配。控件具有InnerText\InnerHtml\Style和Value等属性,一级Attributes等集合特征。每次在页面来源中发现标记了runat="server"的HTML标签时,ASP.NET运行库就会自动地创建对应的HTML服务器控件的实例。 现有的HTML服务器空间集并没有涵盖任一给定版本的HTML模式所有可能的HTML标签。只有最常用的标签才进入System.Web.UI.HtmlControls命名空间。<iframe>、<frameset>、<body>、<hn>等标签,一级<fieldset>、<marquee>和<pre>等最不常用的标签,都被省去了。 然而,对于在服务器上使用和配置的那些标签,缺乏一种专用的服务器控件并不会限制你的编程能力。我们只需要使用一个更一般的编程接口---HtmlGenericControl类。 2.Web服务器控件 Web服务器控件比HTML服务器控件具有更多特征。Web服务器控件不仅包括按钮和文本框等输入控件,而且还包括专用控件,例如日历、下拉列表、TreeView和DataGrid。Web服务器控件还包括一些非常像HTML服务器控件的组件。但是Web服务器控件比对应的HTML服务器控件更抽象,因为他们的对象模型不一定反应HTML语法。例如,让我们比较一下HTMl服务器控件和Web服务器TextBox控件。 Html服务器文本控件具有如下标记:<input runat="server" id="firsName" type="text" value="dino" />Web服务器TextBox控件具有如下标记:
<asp:textbox runat="server" id="firstName" text="dino" />这两个控件都生成相同的HTML标记代码。然而,HTML服务器文本控件的编程接口非常接近HTMl<input>标签的编程接口,而Web服务器TextBox控件的方法和属性以一种更抽象的方式进行命名。例如,为了设置HTMl服务器文本框的内容,必须使用Value属性,因为Value是对应的HTMl属性名。如果使用Web服务器TextBox控件,则必须设置Text属性。