位置:海鸟网 > IT > ASP.NET >

APS + 中文教程(三)

    
  
  作者:bigeagle
  
  ------------------------------------------------------------------------------------------
  
  三、Asp+ 服务器端控制 (Asp+ Server Control)
  
  上次讲了一些有关ASP + 服务器端控制的内容,现在来详细讲一下。Asp + 服务器端控制是微软新提出的概念,它的实现是基于微软的.NET框架,它实际上是一种特殊的HTML元素,服务器端与它是交互的关系,在生成这些元素后不但能接受它们的值,还可以动态控制它们,以完成一些很COOL的功能。下面列出所有ASP + 目前支持的所有28个服务器端控制及其具体用法。
  
  1、 Adrotator : 广告轮换服务器端控制,它的具体行为是在指定的XML文件里定义的,如下:
  
  <Advertisements>
  <Ad>
  <ImageUrl>/quickstart/aspplus/images/banner1.gif</ImageUrl>
  <NavigateUrl></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 runat="server"></asp:TextBox>
  </td>
  <td>
  <h5><font face="Verdana">Comparison Operator:</font></h5>
  
  <asp:ListBox 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 runat="server"></asp:TextBox><p>
  <asp:Button runat=server Text="Validate" />
  </td>
  </tr>
  </table>
  
  <asp:CompareValidator ControlToValidate="txtComp" ControlToCompare = "txtCompTo" Type="String" runat="server"/>
  
  <br>
  
  <asp:Label 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 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" runat="server" />
  
  </form>
  
  </body>
  </html>