本节将介绍一些ASP.NET服务器控件如何工作,并将这些控件传送信息的工作方式与对应的HTML窗体控件进行比较。本节还要介绍如何区分表示代码(HTML)与提供内容的代码(ASP.NET)。这些控件也称为Web控件,本书将频繁使用这个术语(但偶尔它也表示ASP.NET Web控件)。
所有的Web控件都需要两个属性,第一个属性是runat=“server”,它告诉ASP.NET在服务器上处理控件,并为控件执行所有的ASP.NET功能,包括状态的创建。第二个属性是ID=“MyControlName”,以便在代码中操纵控件。
在详细讨论之前,先给出最常用的ASP.NET服务器控件,并与以前使用的HTML窗体标记符进行比较。
表 3-1
|
ASP.NET Web控件 |
对应的HTML窗体标记 |
作 用 |
|
<ASP:label> |
<Span>,<Div>,简单文本 |
显示文本 |
|
<ASP:listbox> |
<Select> |
为用户提供一个选项列表,让用户从中选择 |
|
<ASP:dropdownlist> |
<Select> |
以紧凑的方式为用户提供一个选项列表,让用户从中选择 |
|
<ASP:textbox> |
<input Type="Text"> |
接受用户输入 |
|
<ASP:radiobutton>和<ASP: radiobuttonlist> |
<input Type="Radio"> |
允许用户从一个选项列表中做出选择 |
|
<ASP:checkbox>和<ASP:checkboxlist> |
<input Type="Checkbox"> |
允许用户打开或关闭一项功能 |
|
<ASP: button> |
<input Type="subit"> |
把用户的输入发送到服务器 |
本节首先介绍一个小的但非常有用的控件<ASP:label>控件。在ASP.NET中,该控件用于在Web页面上显示文本。它类似于HTML的 <span>标记。有了文本控件后,就可以在ASP.NET代码中可视化地处理其中的内容。
<ASP:label>控件与其他HTML窗体控件一样,也有一组可以设置的属性。runat=“server”和ID属性用于每个ASP.NET控件。其他属性都是可选的,包括:
● Text:设置标签显示的文本
● Visible:设置标签控件当前是否在页面上显示,其值必须是true或false
● BackColor:设置标签的背景色
● ForeColor:设置标签的前景色
● Height:以像素为单位设置标签的高度
● Width:设置标签控件的宽度
第2章介绍的类浏览器可以显示任何控件的所有属性。
<ASP:label>的基本语法非常简单:
<ASP:label id="lblMylabel" runat="server">Sale Ends May 2nd</ASP:label>
<ASP:>前缀表示该控件属于ASP.NET的内置控件集。还可以创建定制的控件,其前缀由开发人员确定。详见第13章。
<ASP:label>放在Web页面中时,应如下所示(请参考代码下载中的文件ch03\DemoLabel01. ASPx):
<HTML>
<head>
<title>ASP.NET Controls Demo</title>
</head>
<body>
Demo of the ASP:label controp<br />
<form id=”frmDemo” runat="server"> Text of ASP:label </ASP:label>
<ASP:label id="lblGreeting1" runat="server"> Text of ASP:label </ASP:label>
</form>
</body>
</HTML>
这里的id属性用于惟一地标识<ASP:label>控件,以在ASP.NET代码中引用它。runat = "server"属性指明由服务器去处理控件,并生成要传给客户的HTML代码。起始标签和结束标签之间的文本提供了要在标签中显示的字符。
另外,还可以在属性中指定文本。这样,所有的内容都包含在起始标记符中,此时需要以下面的方式结束标记符:
<ASP:label id="lblGreeting1" runat="server" text=”Internet Greeting”/>
这里忽略了结束标记符,仅用斜线/表示标记的结束。本书中,如果标记没有结束,则优先用/来表示结束。下面的例子把文本信息的颜色设置为红色(下载文件ch03\DemoLabel02.ASPx):
<ASP:label id="lblGreeting2" forecolor="red" text="Red Text" runat="server" />
下面的例子介绍如何用<ASP:label>控件为一家旅游公司显示文本。在本例中,假设用户姓名的值以及所选择的目的地已经传递给服务器,现在只需输出一个消息,确认已收到用户的个人信息。
试一试:使用<ASP:label>控件
(1) 打开ASP.NET Web Matrix,创建一个新文件夹ch03。在该文件夹中,创建一个新的ASP.NET页面TIO-Label.ASPx。根据需要输入代码,创建下面的页面。其中一些代码行已经由ASP.NET Web Matrix预先输入。(附录B中介绍了使用ASP.NET Web Matrix的基本技巧)。
<HTML>
<head>
<title>Label Control page</title>
</head>
<body>
<h1>Feiertag Holidays
</h1>
<form runat="server">
<ASP:label id="Message1" text="Chris"></ASP:label>
you have selected to receive information about
<ASP:label id="Message2" runat="server" text="Oslo"> </ASP:label>
. The information package will be sent to you.
</form>
</body>
</HTML>
(2) 通过浏览器浏览此页面,如图3-3所示。

图 3-3
代码的说明
<ASP:label>控件的文本显示在页面上,这些文本与在标准HTML的<span>标记符中输入的结果相同。更有趣的是,从浏览器中选择View | Source查看一下源代码,注意两个地方。首先,ASP.DLL把<ASP:label>控件换成了<span>标记符。第二,ASP.NET在窗体中添加了一个name=“_VIEWSTATE”的额外标记符,其值是一个长字符串。
这个例子是可以工作的,但还可以在代码中修改文本。第2章曾使用Page_Load()事件中的代码来影响控件,这里也可以这么做,如下所示(应把它保存为TIO Label2.ASPx)。首先在两个<ASP:label>控件的最后删除Text属性(在下面的代码中显示为黑体):
<ASP:label id="Message1" text="Chris"></ASP:label>
you have selected to receive information about
<ASP:label id="Message2" runat="server" text="Oslo"> </ASP:label>
. The information package will be sent to you.
再在HTML代码的前面添加下面的ASP.NET脚本。
<script language="vb" runat="server">
Sub Page_Load()
Message1.Text = "Vervain"
Message2.Text = "Madrid"
End Sub
</script>
<HTML>
运行此代码,会看到输出发生改变,如图3-4所示。

图 3-4
忽略Sub和End Sub语句(只要请求或刷新页面,就会执行Page_Load()部分,详见第6章)。它们之间的代码起了很重要的作用,下面一行表示第一个<ASP:label>控件,text表示控件的text属性。此代码行表示将Method1 <ASP:label>的text属性设为Vervain:
Message1.Text = "Vervain"
这个例子允许修改代码,以改变<ASP:label>控件的内容。以后的章节将讨论如何以更复杂的方式修改值,包括把文本改为从数据库中读取的数值。所有的ASP.NET控件属性都可以用相同的方式修改。例如:
Message1.Text = "Vervain"
Message1.backcolor = Drawing.color.red
Message1.font.italic=true
Message1.font.size=FontUnit.large