2024年3月19日发(作者:)

第5章 HTML控件和Web服务器控件

在中,一切都是对象。Web页面就是一个对象的容器。那么,这个容器可以装些什么东

西呢?这一节我们学习HTML控件和Web服务器端控件,叫做Control。这是Web页面能够容纳的对

象之一。

Control是一个可重用的组件或者对象,这个组件不但有自己的外观,还有自己的数据和方法,大

部分组件还可以响应事件。通过微软的集成开发环境(Visual 2003),可以简单地把一个

Control拖放到一个Form中。

为什么会有HTML控件和Web服务器端控件之分呢?这是因为一些Control是在服务器端存在的。

服务器端控件有自己的外观,在客户端浏览器中,Server Control的外观由HTML代码来表现。Server

Control会在初始化时,根据客户的浏览器版本,自动生成适合浏览器的HTML代码。

5.1 HTML控件

HTML控件由HTML标记衍生而来,HTML控件在外形上与普通的HTML标记很相似,几乎所有

的HTML标记加上runat="Server"这个Server控件的标识属性后,都可以变成HTML控件。它们之间

最大的区别就是HTML可以通过服务器端的代码来控制。下面以一个超级链接控件(HtmlAnchor)为例

来看一下。

可以在上定义一个HtmlAnchor控件:

欢迎来到微软中国

上面的这段代码就是定义的一个HTML控件,它与普通的标记相比,区别仅仅是添加了

runat="server"属性。

5.1.1 HTML控件的优点

ASP允许我们在服务器上使用组件,这些组件能够产生反馈给用户的页面。通过控件扩

展了这一概念。将任何HTML元素转换为服务器控件所需要的只是一个附加的属性:runat="Server"。

将在服务器上处理这些元素,并可以产生适合各种特定用户的输出。另外,我们可以通过

HTML

和表单控制元素做其他事情,如编写代码处理进出服务器期间的状态。这使得编写程序

不再那么枯燥乏味,同时也提高了工作效率。

总结起来,HTML控件主要优点有以下两个方面:

1) HTML控件将HTML标注对象化,可以让程序直接控制并设定其属性,这样一来程序代码和

HTML控件分开,程序的架构就不会显得杂乱无章而不好管理。

第5章 HTML控件和Web服务器控件

117

2) HTML控件对事件的支持,以事件触发方式来编写程序,使得网页编程变得更加简单。

[例5.1] 利用程序直接控制并设定HTML控件属性。首先定义一个普通的HTML标记:

这个标记不会产生任何有意义的显示结果。同样也建立一个不会有任何显示结果的HtmlAnchor控

件:

这里需要注意:HTML控件比HTML标注多了ID以及runat这两种属性。ID属性表示程序是以本

属性来控制对象的,所以任何对象的名称不可重复,不管它们是否为同一种类。而runat属性表示这个

对象是在Server端执行,所有的HTML控件都必须加上这个属性设定值;倘若该对象在程序执行时不

需要被程控,则可以忽略ID属性的设定。

初始化时,两者处于同一状态,均不会输入任何显示结果。此时,普通的anchor标记是没有办法

再让自身输出“可视”的显示,它在程序中作用为零。而HtmlAnchor控件则不同,它的作用并没有受到

丝毫的影响。程序依然可以在Page_load事件中设置它的各种属性.它依然可以展示它所有的功能。其

HTML代码如下所示:

<%@ Page language="c#" Codebehind="" AutoEventWireup="true"

Inherits="m1" %>

运行结果如图5.1所示。

我们通过查看这个页面的源文件可以发现在客户端,HtmlAnchor控件生成的还是普通的HTML标

记。

欢迎来到微软中国