html 控件的优点
在第二章里我们介绍了一些基本的html 标注,这些html 标注在以往的静态网页或asp 动态网页里即可满足我们的需求。但是标准的html 标注并没有办法利用程序直接来控制它们的属性、使用方法和接收事件,程序设计师必须另外学习其它如javascript 等程序语言才得以控制这些html 标注。asp.net 为动态网页程序设计带来了许多新的技术,这些技术其中之一就是将所有的html 标注对象化,让程序可以直接控制;对象化之后的html 标注我们称为html控件。我们可以使用如vb.net 或c# 等语言来撰写控制html 控件的程序,asp.net 把html标注对象化,可以让网页对象的互动、程序的写作及维护变的更轻松容易,也让执行的效率明显的改善不少。asp.net 将html 标注对象化的好处,我们观察以下程序便了解:
<!--传统的html 静态网页写作方式-->
<html>
<body>
<a href="http://www.microsoft.com">请按这里</a>
</body>
</html>
传统的html 标注无法利用程序直接控制,这是因为html 标注当初设计时并没有彻底对象化;所以如果要动态的利用程序设定标注的属性,必需要插入asp 程序才可以,如下所示:
<!--为了动态的设定标注的属性,必需在标注中插入许多程序-->
<html>
<%
straddress="http://www.microsoft.com"
%>
<a href=<%=straddress%>>请按这里</a>
</html>
asp 网页设计师没有办法直接利用程控对象,所以必需在标注后面插入一些asp 程序代码。这就是为什么以前的asp 程序代码非常杂乱,常常会看到标注中插入许多叙述的程序,这样会导致程序代码在维护以及阅读上的困难。asp.net 为了要解决这种杂乱无章的程序写作风格,便将html 标注对象化而产生出html 控件。html 控件可以让程序直接控制并设定其属性,如下范例所示:
<!--asp.net 的html 控件可以利用程序直接控制-->
<html>
<a id="anchor1" runat="server">请按这里</a>
</html>
<script language="vb" runat="server">
sub page_load()
anchor1.href="http://www.microsoft.com"
end sub
</script>
html 控件比html 标注多了id 以及runat 这两种属性。id 属性表示程序是以本属性来控制对象的,所以任何对象的名称不可重复,不管它们是否为同一种类。而runat 属性表示这个对象是在server 端执行,所有的html 控件都必须加上这个属性设定值;倘若该对象在程序执行时不需要被程控,则可以忽略id 属性的设定。我们知道网页在被加载时会先触发page_load事件,此时我们就可以利用这个事件进行对象的初值化,以及从数据库抓数据回来等工作,所以我们在page_load 事件程序中利用程序指定超级链接控件anchor1 的href 属性。这样一来程序代码和html 控件分开,程序的架构就不会显的杂乱无章而不好管理。了解html 控件可以直接被程序所控制后,我们再来了解html 控件对事件的支持:
<html>
<form runat="server">
<button id="button1" runat="server" onserverclick="button1_click">
改变字体</button><br>
</form>
<span id="sp1" runat="server">原来的字体</span>
<script language="vb" runat="server">
sub button1_click(sender as object, e as eventargs)
sp1.innerhtml="<b>按下button1 后出现的字体</b>"
end sub
</script>
</html>
上述程序代码中我们宣告了名为button1 的button 控件,除指定runat 属性值为server 外还指定了onserverclick 属性为button1_click。onserverclick 是button 对象所支持的事件,本事件在使用者按下按钮时便会触发。设定本属性表示发onserverclick 事件时要执行哪个事件程序,我们将属性值填入button1_click 则表示当使用者按下按钮时,便会执行button1_click 这
个事件程序。
button1_click 这个事件程序中宣告了对象型态的变量sender 及事件参数e,分别表示是由哪个对象发出事件,以及发生事件时的相关信息;
每个事件程序中都要加入「sender as object, eas eventargs」这两个参数宣告。另外button 控件必需被<form runat="server"> 以及</form 所包围,我们在介绍form 的时候会详细说明。程序的执行结果为:

span 控件最主要的功能是用来显示文字,设定span 控件的innerhtml 属性可以决定span 控件所显示的文字。由下面的执行结果我们看到了button1 按下后改变了sp1 的innerhtml 属性,所以sp1 所显示出来的文字变成"按下button1 后出现的字体"。innerhtml 属性内容中若含有html 标注,这个标注将会被解译并生效;所以按下按钮后不但文字内容变了,而且<b> 标注也被解译并生效,所以出现的文字变成粗体。
