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> 标注也被解译并生效,所以出现的文字变成粗体。
|