当asp.net 网页执行时,会检查标注有无runat 属性。如果标注没有设定这个属性,那么该标注就会被视为字符串,并被送到字符串流等待送到客户端的浏览器进行解译。如果标注有设定runat="server" 属性,那么就会依照该标注所对应的html 控件来产生对象,所以asp.net对象的产生是由runat 属性值所决定的。当程序在执行时解析到有指定runat="server" 属性的标注时,page 对象会将该控件从.net 共享类别库加载并列入控制架构中,表示这个控件可以被程序所控制。等到程序执行完毕后再将html 控件的执行结果转换成html 标注,然后送到字符串流和一般标注一起下载至客户端的浏览器进行解译。

了解html 控件的动作原理后,下表列出指定html 标注的runat 属性时,所对应的html 控件:


html 控件的使用和html 标注使用的方法差不多,只要在使用的时候加上id 以及runat 这两个属性即可。我们可以选择下列两种风格来使用html 控件:
<标注id=控件名称runat="server" 属性1="值" 属性2...>所要显示的文字
</标注>
或
<标注id=控件名称runat="server" 属性1="值" 属性2.../>
以htmlbutton 为例,第二种用法如果没有撰写所要显示的文字,则可以在网页被加载发生page_load 事件时来设定初始值,如下范例所示:
<html>
<form runat="server">
<button id="button1" runat="server"/>
</form>
<script language="vb" runat="server">
sub page_load(sender as object, e as eventargs)
button1.innertext="按钮一"
end sub
</script>
</html>
若使用其它如<div>、<span> 或<font> 没有显示于上述列表中的标注,asp.net 则以htmlgenericcontrol 类别来支持。以下为html 控件的架构图:
