三、ASP+ 服務器端控制 (ASP+ Server Control)
上次講了一些有關ASP + 服務器端控制的內容,現在來詳細講一下。ASP + 服務器端控制是微軟新提出的概念,它的實現是基於微軟的.Net框架,它實際上是一種特殊的Html元素,服務器端與它是交互的關系,在生成這些元素後不但能接受它們的值,還可以動態控制它們,以完成一些很COOL的功能。下面列出所有ASP + 目前支持的所有28個服務器端控制及其具體用法。
1、 Adrotator : 廣告輪換服務器端控制,它的具體行為是在指定的XML文件裡定義的,如下:
<Advertisements>
<Ad>
<ImageUrl>/quickstart/ASPplus/images/banner1.gif</ImageUrl>
<NavigateUrl>http://www.microsoft.com</NavigateUrl>
<AlternateText>Microsoft.com</AlternateText>
<KeyWord>Computers</KeyWord>
<ImPRessions>80</Impressions>
</Ad>
</Advertisements>
屬性的含義:
<ImageUrl>: 要顯示得圖片絕對或相對路徑。
<NavigateUrl>: 點擊圖片所指向的URL,如果為空則圖片不能被點擊。
<AlternateText>: 鼠標移動到圖片上所顯示的提示信息。
<KeyWord>: 指定改廣告頁面的過濾關鍵字。
<Impressions>: 該廣告的顯示百分比,這個數值越高,顯示的次數越多。
2、 button: 這個好理解,類似於傳統表單中的Button,但用法稍有不同,具體用法我就不祥述了。
3、 Calendar: 一個很方便的日歷控制,這樣就不用再用Javascript費勁編了,還得計算閏年什麼的,要多煩有多煩,看下面的例子:
<Html>
<head>
<script language="C#" runat="server">
void Date_Selected(object s, EventArgs e) {
Label1.Text = "Selected date is: " + Calendar1.SelectedDate.ToShortDateString();
}
</script>
</head>
<body>
<h3><font face="Verdana">Calendar Example</font></h3>
<form runat=server>
<ASP:Calendar id=Calendar1 onselectionchanged="Date_Selected" runat="server" />
<p>
<ASP:Label id=Label1 runat="server" />
</form>
</body>
</Html>
這個控制帶有一個屬性SelectionMode,它的具體屬性值如下:
Day : 可以選擇任意一個單獨的日子。
DayWeek: 可以選擇一天或一個星期。
DayWeekMonth: 可以選擇一天或一個星期或一個月。
None: 不能選擇日期。
4、 CheckBox : 檢查框嘛,沒什麼好說的,但有一點不同,那就是如果它的AutoPostBack屬性設為真,則點選它時可以提交到服務器端。
5、 CheckBoxList : 顧名思義,一組可多選的檢查框列表,它有兩個重要的屬性,RepeatLayout和RepeatDirection,控制這個列表的布局,設成table則該列表以表格為底,如果設成flow,則沒有表格,RepeatDirection默認為vertical,垂直排列,如果設為horizontally,則水平排列。
6、 CompareValidator :進行兩個服務器端控制的比較。它有三個不能缺少的重要屬性:ControlToValidate , ControlToCompare 決定要比較那些控制,Operator決定比較的方式,是等於、不等於、大於、小於等。具體實現看下面的例子:
CompareValidator1.ASPx
<%@ Page clIEnttarget=downlevel %>
<Html>
<head>
<script language="C#" runat="server">
void Button1_OnSubmit(Object sender, EventArgs e) {
if (Page.IsValid) {
lblOutput.Text = "Result: Valid!";
}
else {
lblOutput.Text = "Result: Not valid!";
}
}
void lstOperator_SelectedIndExchanged(Object sender, EventArgs e) {
comp1.Operator = (ValidationCompareOperator) lstOperator.SelectedIndex;
comp1.Validate();
}
</script>
</head>
<body>
<h3><font face="Verdana">CompareValidator Example</font></h3>
<p>Type a value in each textbox, select a comparison Operator, then click "Validate" to test.</p>
<form runat=server>
<table bgcolor="#eeeeee" cellpadding=10>
<tr valign="top">
<td>
<h5><font face="Verdana">String 1:</font></h5>
<asp:TextBox Selected id="txtComp" runat="server"></ASP:TextBox>
</td>
<td>
<h5><font face="Verdana">Comparison Operator:</font></h5>
<ASP:ListBox id="lstOperator" OnSelectedIndexChanged="lstOperator_SelectedIndExchanged" runat="server">
<asp:ListItem Selected Value="Equal" >Equal</ASP:ListItem>
<asp:ListItem Value="NotEqual" >NotEqual</ASP:ListItem>
<asp:ListItem Value="GreaterThan" >GreaterThan</ASP:ListItem>
<asp:ListItem Value="GreaterThanEqual" >GreaterThanEqual</ASP:ListItem>
<asp:ListItem Value="LessThan" >LessThan</ASP:ListItem>
<asp:ListItem Value="LessThanEqual" >LessThanEqual</ASP:ListItem>
</ASP:ListBox>
</td>
<td>
<h5><font face="Verdana">String 2:</font></h5>
<asp:TextBox id="txtCompTo" runat="server"></ASP:TextBox><p>
<ASP:Button runat=server Text="Validate" ID="Button1" onclick="Button1_OnSubmit" />
</td>
</tr>
</table>
<ASP:CompareValidator id="comp1" ControlToValidate="txtComp" ControlToCompare = "txtCompTo" Type="String" runat="server"/>
<br>
<ASP:Label ID="lblOutput" Font-Name="verdana" Font-Size="10pt" runat="server"/>
</form>
</body>
</Html>
7、 CustomValidator:自定義比較,作用就是可以進行上述基本比較不能完成的比較操作。這個比較可以運行在服務器端,也可以運行在客戶端,如用vbscript或Javascript。用法很簡單,看例子吧。
CustomValidator1.ASPx
<Html>
<head>
<script language="C#" runat=server>
void ValidateBtn_OnClick(object sender, EventArgs e) {
if (Page.IsValid) {
lblOutput.Text = "Page is valid!";
}
else {
lblOutput.Text = "Page is not valid! :-(";
}
}
bool ServerValidate (object source, string value) {
int num = Int32.FromString(value);
if (num%2 == 0)
return true;
else
return false;
}
</script>
</head>
<body>
<h3><font face="Verdana">CustomValidator Example</font></h3>
<form runat="server">
<ASP:Label id=lblOutput runat="server"
Text="Enter an even number:"
Font-Name="Verdana"
Font-Size="10pt" /><br>
<p>
<ASP:TextBox id=Text1 runat="server" />
<ASP:CustomValidator id="CustomValidator1" runat="server"
ControlToValidate="Text1"
OnServerValidationFunction="ServerValidate"
Display="Static"
Font-Name="verdana" Font-Size="10pt">
Not an even number!
</ASP:CustomValidator>
<p>
<ASP:Button text="Validate" onclick="ValidateBtn_OnClick" runat="server" />
</form>
</body>
</Html>