asp.net中关于web form的学习

时间:2021-07-24 15:39:40

我们在验证的时候,有时需要进行特殊的验证。在下面的表中,列出了需要进行特殊验证时要使用的特殊控件。

控件

描述

RequiredFieldValidator

使用户在输入时,不是使这一项为空

CompareValidator

对两个控件的值进行比较

RangeValidator

对输入的值进行控制,使其值界定在一定范围内

RegularExpressionValidator

把用户输入的字符和自定义的表达式进行比较

CustomValidator

自定义验证方式

ValidationSummary

在一个页面中显示总的验证错误


现在对各个验证控件介绍:

1. RequiredFieldValidator

下面的这个例子,演示了RequiredFieldValidator控件的使用方法。
validate3.aspx文件:
<!--源文件:form\web页面简介\validate3.aspx-->
<html>
<body>
<center>
<title>验证控件演示 (1)</title>
<h3><font face="Verdana">验证控件演示 (1)</font></h3>
<form runat=server>
姓名: <asp:TextBox id=Text1 runat="server"/>
<asp:RequiredFieldValidator id="RequiredFieldValidator1" ControlToValidate="Text1" Font-Name="Arial" Font-Size="11" runat="server">
此项不能为空!
</asp:RequiredFieldValidator>
<p>
<asp:Button id="Button1" runat="server" Text="验证" />
</form>
</center>
</body>
</html>
当我们不在文本框中输入内容的时候,页面上将会出现不能为空的提示。

程序运行如下:

asp.net中关于web form的学习

2.CompareValidator 控件 为了比较两个控件的值,此时我们需要使用CompareValidator 控件。
在下面的这个例子中,我们将讲解CompareValidator 控件的用法。
先看文件validata4.aspx:
<!--源文件:form\web页面简介\validate4.aspx-->
<%@ Page clienttarget=downlevel %>
<html>
<title>CompareValidator控件示例</title>
<head>
<script language="VB" runat="server">
Sub Button1_OnSubmit(sender As Object, e As EventArgs)
If Page.IsValid Then
lblOutput.Text = "比较正确!"
Else
lblOutput.Text = "比较不正确!"
End If
End Sub
Sub lstOperator_SelectedIndexChanged(sender As Object, e As EventArgs)
comp1.Operator = lstOperator.SelectedIndex
comp1.Validate
End Sub
</script>
</head>
<body>
<center>
<h3><font face="Verdana">CompareValidator控件示例</font></h3>
<form runat=server>
<table bgcolor="#eeeeee" cellpadding=10>
<tr >
<td>
<h5><font face="Verdana">字符串 1:</font></h5>
<asp:TextBox Selected id="txtComp" runat="server"></asp:TextBox>
</td>
<td>
<h5><font face="Verdana">比较运算符:</font></h5>
<asp:ListBox id="lstOperator" OnSelectedIndexChanged="lstOperator_SelectedIndexChanged" runat="server">
<asp:ListItem Selected Value="Equal" >=</asp:ListItem>
<asp:ListItem Value="NotEqual" ><></asp:ListItem>
<asp:ListItem Value="GreaterThan" >></asp:ListItem>
<asp:ListItem Value="GreaterThanEqual" >>=</asp:ListItem>
<asp:ListItem Value="LessThan" ><</asp:ListItem>
<asp:ListItem Value="LessThanEqual" >=<</asp:ListItem>
</asp:ListBox>
</td>
<td>
<h5><font face="Verdana">字符串 2:</font></h5>
<asp:TextBox id="txtCompTo" runat="server"></asp:TextBox><p>
<asp:Button runat=server Text="验证" 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>
</center>
</body>
</html>
在上面的代码中,我们实现了对两个控件的值进行比较。
程序运行如下:
当我们在两个文本框中输入值,然后选定运算符后,点验证按钮后,在页面上将显示

比较结果::

asp.net中关于web form的学习


3.RangeValidator控件 RangeValidator控件主要界定输入的值的范围。因为有时我们要求输入的值是要有一定范围的,所以我们要使用RangeValidator来判断。
在下面的这个例子中,我们将来介绍RangeValidator控件。
请看validata5.aspx的程序内容:
<!--源文件:form\web页面简介\validate5.aspx-->
<%@ Page clienttarget=downlevel %>
<html>
<center>
<title>RangeValidator控件演示</title>
<head>
<script language="VB" runat="server">
Sub Button1_Click(sender As Object, e As EventArgs)
If (Page.IsValid) Then
lblOutput.Text = "结果正确!"
Else
lblOutput.Text = "结果不正确!"
End If
End Sub
Sub lstOperator_SelectedIndexChanged(sender As Object, e As EventArgs)
rangeVal.Type = lstType.SelectedIndex
rangeVal.Validate
End Sub
</script>
</head>
<body>

<h3><font face="Verdana">RangeValidator控件演示</font></h3>
<p>
<form runat="server">
<table bgcolor="#eeeeee" cellpadding=10>
<tr >
<td>
<h5><font face="Verdana">输入要验证的值:</font></h5>
<asp:TextBox Selected id="txtComp" runat="server"/>
</td>
<td>
<h5><font face="Verdana">数据类型:</font></h5>
<asp:DropDownList id="lstType" OnSelectedIndexChanged="lstOperator_SelectedIndexChanged" runat=server>
<asp:ListItem Selected Value="String" >String</asp:ListItem>
<asp:ListItem Value="Integer" >Integer</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<h5><font face="Verdana">最小值:</font></h5>
<asp:TextBox id="txtMin" runat="server" />
</td>
<td>
<h5><font face="Verdana">最大值:</font></h5>
<asp:TextBox id="txtMax" runat="server" /><p>
<asp:Button Text="验证" ID="Button1" onclick="Button1_Click" runat="server" />
</td>
</tr>
</table>
<asp:RangeValidator id="rangeVal" Type="String" ControlToValidate="txtComp" MaximumControl="txtMax" MinimumControl="txtMin" runat="server"/>
<br>
<asp:Label id="lblOutput" Font-Name="verdana" Font-Size="10pt" runat="server" />
</form>
</body>
</center>
</html>
当我们在三个文本框中分别输入要验证的值,最大值,和最小值,然后按下验证按钮,页面上将显示判断的结果。
在本例中我们只能比较integer和string的值,当然,我们也可以增加数据类型,如double型,float型,date型,currency型等。
结果运行如下:

asp.net中关于web form的学习


4. RegularExpressionValidator控件 我们在制作网站的时候,尤其是各种电子商务网站,首先都会让用户填写一些表格来获取注册用户的各种信息,因为用户有可能输入各式各样的信息,而有些不符合要求的数据会给我们的后端ASP处理程序带来不必要的麻烦,甚至导致网站出现一些安全问题。因此我们在将这些信息保存到网站的数据库之前,要对这些用户所输入的信息进行数据的合法性校验,以便后面的程序可以安全顺利的执行。 使用RegularExpressionValidator服务器控件,可以用来检查我们输入的信息是否和我们的自定义的表达式一致。比方说用它可以检查e-mail地址,电话号码等合法性。 在讲述RegularExpressionValidator服务器控件使用之前,我们先来了解一下正则表达式(RegularExpression)的来源: 正则表达式的"祖先"可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为"神经网事件的表示法"的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为"正则集的代数"的表达式,因此采用"正则表达式"这个术语。随后,发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson是Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。 
其实,正则表达式(RegularExpression)是一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 
使用正则表达式,就可以: 
1. 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。 
2. 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。 
3. 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。 
例如,如果需要搜索整个 web 站点来删除某些过时的材料并替换某些HTML 格式化标记,则可以使用正则表达式对每个文件进行测试,看在该文件中是否存在所要查找的材料或 HTML 格式化标记。用这个方法,就可以将受影响的文件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料,最后,可以再次使用正则表达式来查找并替换那些需要替换的标记。 
另一个说明正则表达式非常有用的示例是一种其字符串处理能力还不为人所知的语言。VBScript 是 Visual Basic 的一个子集,具有丰富的字符串处理功能。与 C 类似的 Visual Basic Scripting Edition 则没有这一能力。正则表达式给 Visual Basic Scripting Edition 的字符串处理能力带来了明显改善。不过,可能还是在 VBScript 中使用正则表达式的效率更高,它允许在单个表达式中执行多个字符串操作。
正是由于"正则表达式"的强大功能,才使得微软慢慢将正则表达式对象移植到了视窗系统上面。在书写正则表达式的模式时使用了特殊的字符和序列。下表描述了可以使用的字符和序列,并给出了实例。 
字符描述: \:将下一个字符标记为特殊字符或字面值。例如"n"与字符"n"匹配。"\n"与换行符匹配。序列"\\"与"\"匹配,"\("与"("匹配。 
  • ^ :匹配输入的开始位置。 
  • $ :匹配输入的结尾。 
  • * :匹配前一个字符零次或几次。例如,"zo*"可以匹配"z"、"zoo"。 
  • + :匹配前一个字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。 
  • ? :匹配前一个字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。 
  • .:匹配换行符以外的任何字符。 
  • (pattern) 与模式匹配并记住匹配。匹配的子字符串可以从作为结果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括号字符(和 ),可使用"\(" 或 "\)"。 
  • x|y:匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。 
    {n}:n 为非负的整数。匹配恰好n次。例如,"o{2}" 不能与 "Bob 中的 "o" 匹配,但是可以与"foooood"中的前两个o匹配。 
  • {n,} :n 为非负的整数。匹配至少n次。例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等价于"o+"。"o{0,}"等价于"o*"。 
  • {n,m} :m 和 n 为非负的整数。匹配至少 n 次,至多 m 次。例如,"o{1,3}" 匹配 "fooooood"中前三个o。"o{0,1}"等价于"o?"。 
  • [xyz] :一个字符集。与括号中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。 
  • [^xyz] :一个否定的字符集。匹配不在此括号中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p". 
  • [a-z] :表示某个范围内的字符。与指定区间内的任何字符匹配。例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。 
  • [^m-z] :否定的字符区间。与不在指定区间内的字符匹配。例如,"[m-z]"与不在"m"到"z"之间的任何字符匹配。 
  • \b :与单词的边界匹配,即单词与空格之间的位置。例如,"er\b" 与"never"中的"er"匹配,但是不匹配"verb"中的"er"。 
  • \B :与非单词边界匹配。"ea*r\B"与"never early"中的"ear"匹配。 
  • \d :与一个数字字符匹配。等价于[0-9]。 
  • \D :与非数字的字符匹配。等价于[^0-9]。 
  • \f :与分页符匹配。 
  • \n :与换行符字符匹配。 
  • \r :与回车字符匹配。 
  • \s :与任何白字符匹配,包括空格、制表符、分页符等。等价于"[ \f\n\r\t\v]"。 
  • \S :与任何非空白的字符匹配。等价于"[^ \f\n\r\t\v]"。 
  • \t :与制表符匹配。 
  • \v :与垂直制表符匹配。 
  • \w :与任何单词字符匹配,包括下划线。等价于"[A-Za-z0-9_]"。 
  • \W :与任何非单词字符匹配。等价于"[^A-Za-z0-9_]"。 
  • \num :匹配 num个,其中 num 为一个正整数。引用回到记住的匹配。例如,"(.)\1"匹配两个连续的相同的字符。 
  • \n:匹配 n,其中n 是一个八进制换码值。八进制换码值必须是 1, 2 或 3 个数字长。 
    例如,"\11" 和 "\011" 都与一个制表符匹配。"\0011"等价于"\001" 与 "1"。八进制换码值不得超过 256。否则,只有前两个字符被视为表达式的一部分。允许在正则表达式中使用ASCII码。 
  • \xn:匹配n,其中n是一个十六进制的换码值。十六进制换码值必须恰好为两个数字长。例如,"\x41"匹配"A"。"\x041"等价于"\x04" 和 "1"。允许在正则表达式中使用 ASCII 码。 
RegularExpressionValidator有两种主要的属性来进行有效性验证。ControlToValidate 包含了一个值进行验证。如取出文本框中的值。如ControlToValidate="TextBox1" ValidationExpression 包含了一个正则表达式进行验证。
好了,有了上面的叙述,我们就举个例子来说明正则表达式。比如,我们想要对用户输入的电子邮件进行校验,那么,什么样的数据才算是一个合法的电子邮件呢?我可以这样输入:test@yesky.com,当然我也会这样输入:xxx@yyy.com.cn,但是这样的输入就是非法的:xxx@@com.cn或者@xxx.com.cn,等等,所以我们得出一个合法的电子邮件地址至少应当满足以下几个条件: 
1. 必须包含一个并且只有一个符号"@" 
2. 第一个字符不得是"@"或者"." 
3. 不允许出现"@."或者.@ 
4. 结尾不得是字符"@"或者"." 
所以根据以上的原则和上面表中的语法,我们很容易的就可以得到需要的模板如下:"= "^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$"
请看validata6.aspx的内容:

<!--源文件:form\web页面简介\validate6.aspx-->
</head>
<body>
<center><h3><font face="Verdana">使用正则表达式验证</font></h3></center>
<p>
<form runat="server">
<center>
<title>使用正则表达式验证</title>
<table bgcolor="#eeeeee" cellpadding=10>
<tr >
<td colspan=3>
<asp:Label ID="lblOutput" Text="输入E-mail地址" Font-Name="Verdana" Font-Size="10pt" runat="server"/>
</td>
</tr>
<tr>
<td align=right>
<font face=Verdana size=2>E-mail:</font>
</td>
<td>
<ASP:TextBox id=TextBox1 runat=server />
</td>
<td>
<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server"
ControlToValidate="TextBox1"
ValidationExpression="^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$" 
Display="Static"
Font-Name="verdana" 
Font-Size="10pt">
请输入有效的E-mail地址!
</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td></td>
<td>
<ASP:Button text="验证" OnClick="ValidateBtn_Click" runat=server />
</td>
<td></td>
</tr>
</table>
</center>
</form>
</body>
</html>

  这样,我们只要定制不同的模板,就可以实现对不同数据的合法性校验了。所以,正则表达式对象中最重要的属性就是:"Pattern"属性,只要真正掌握了这个属性,才可以*的运用正则表达式对象来为我们的数据校验进行服务。
程序的运行效果如图:

asp.net中关于web form的学习


通过上面的介绍,我们对数据验证的方法有了一定的认识。在下面的内容中,我们还将通过更具体的实例,来对数据的有效性验证进行讲解。

2.1.3.3.3 Page_Unload

这个阶段页面已经处理完毕,需要做些清理工作。一般地,你可以在这个阶段关闭打开的文件和数据库链路,或者释放对象。
1、 断开数据库连接
请看如下脚本:
<script language="VB" runat="server">
'定义一个共有变量
public Dim MyConnection As SQLConnection
'定义Page_Load事件
Sub Page_Load(Src As Object, E As EventArgs) 
Dim DS As DataSet

Dim MyCommand As SQLDataSetCommand
MyConnection = New SQLConnection("server='iceberg';uid=sa;pwd=;database=info") MyCommand = New SQLDataSetCommand("select * from infor",MyConnection)
Myconnection.open()
DS = New DataSet()
MyCommand.FillDataSet(ds, "infor")
MyDataGrid.DataSource=ds.Tables("infor").DefaultView
MyDataGrid.DataBind()
End Sub
'定义Page_UnLoad事件
Sub Page_UnLoad(Src As Object, E As EventArgs)
'与数据库断开连接 
MyConnection.Close()
End Sub
现在我们在来看一个对文件操作的例子。
在这个例子中,我们使用的了两个事件,Page_Load事件和Page_Unload事件。在Page_Load事件先创建一个文件,然后向这个文件中写入内容。在Page_Unload事件中我们将此文件关闭。
代码如下:
<%@ import namespace="system.io" %>
<html>
<head>
<title>ASP.NET 测试 写 文本文件</title>
</head>
<body>
<script language="vb" runat="server">
public Dim writeFile As StreamWriter
Sub Page_Load(Sender As Object,E as EventArgs)
writeFile = File.CreateText( "c:\test.txt" )
writeFile.WriteLine( "这是一个测试文件!" )
writeFile.WriteLine( "使用了Page_Load事件和Page_Unload事件!" )
Response.Write( "test.txt 创建 并 写入 成功!" )
End Sub
Sub Page_UnLoad(Sender AS Object, E as EventArgs)
writeFile.Close
End Sub
</script>
</body>
</html>
这样,我们就使用了Page_Load事件和Page_Unload事件。很明显,我们定义Page_Load事件,是因为这个阶段页面已经处理完毕,需要做些清理工作。
上面我们分析了页面处理最重要的几个阶段。应该说明的是:页面的处理过程远比上面的复杂,因为每个控件都需要初始化。在后面的章节中,我们还将了解到更加详细的页面处理过程。

2.1.4 Web Form事件模型

在asp.net中,事件是一个非常重要的概念。我们举两个例子来说明在Web Form 中的应用。

2.1.4.1 例子一:多按钮事件

我们在一个<form></form>里面有几个按钮,多个事件的响应我们该怎么处理呢?在asp.net中有很好的处理机制,我们可以在一个页面中写几个方法来分别响应不同的事件。

在下面的例子中,将根据五个按钮的功能,我们定义了五个方法:AddBtn_Click(Sender As Object, E As EventArgs)、AddAllBtn_Click(Sender As Object, E As EventArgs)、RemoveBtn_Click(Sender As Object, E As EventArgs)、RemoveAllBtn_Click(Sender As Object, E As EventArgs)、result(Sender As Object,E As EventArgs),分别用来处理全部加进、单个加进、单个取消、全部取消和提交事件。我们的form提交的时候,还是提交给本页面,由本页面进行处理,代码如下:
<form action="menent.aspx" runat=server>
其中,menent.aspx就是本页面。

Menent.aspx文件代码如下: 
<!--源文件:form\web页面简介\menent.aspx-->
<html>

<script language="VB" runat="server">

Sub AddBtn_Click(Sender As Object, E As EventArgs)

If Not (AvailableFonts.SelectedIndex = -1)
InstalledFonts.Items.Add(New ListItem(AvailableFonts.SelectedItem.Value))
AvailableFonts.Items.Remove(AvailableFonts.SelectedItem.Value)
End If
End Sub

Sub AddAllBtn_Click(Sender As Object, E As EventArgs)

Do While Not (AvailableFonts.Items.Count = 0)
InstalledFonts.Items.Add(New ListItem(AvailableFonts.Items(0).Value))
AvailableFonts.Items.Remove(AvailableFonts.Items(0).Value)
Loop
End Sub

Sub RemoveBtn_Click(Sender As Object, E As EventArgs)

If Not (InstalledFonts.SelectedIndex = -1)
AvailableFonts.Items.Add(New ListItem(InstalledFonts.SelectedItem.Value))
InstalledFonts.Items.Remove(InstalledFonts.SelectedItem.Value)
End If
End Sub

Sub RemoveAllBtn_Click(Sender As Object, E As EventArgs)

Do While Not (InstalledFonts.Items.Count = 0)
AvailableFonts.Items.Add(New ListItem(InstalledFonts.Items(0).Value))
InstalledFonts.Items.Remove(InstalledFonts.Items(0).Value)
Loop
End Sub

Sub result(Sender As Object,E As EventArgs)

dim tmpStr as String

tmpStr="<br>"
Do While Not (InstalledFonts.Items.Count = 0)
tmpStr=tmpStr & InstalledFonts.items(0).value & "<br>"
InstalledFonts.items.remove(InstalledFonts.items(0).value)
Loop
tmpStr=System.Web.HttpUtility.UrlEncodeToString(tmpStr,System.Text.Encoding.UTF
8)
Page.Navigate("result.aspx?InstalledFonts=" & tmpStr)

End Sub 

</script>

<body bgcolor="#ccccff">
<center>
<h3><font face="Verdana">.NET->不同事件的处理方法!</font></h3>
</center>
<center>
<form action="menent.aspx" runat=server>

<table>
<tr>
<td>
现有字体
</td>
<td>
<!-- Filler -->
</td>
<td>
选择的字体 
</td>
</tr> 
<tr>
<td>
<asp:listbox id="AvailableFonts" width="100px" runat=server>
<asp:listitem>Roman</asp:listitem>
<asp:listitem>Arial Black</asp:listitem>
<asp:listitem>Garamond</asp:listitem>
<asp:listitem>Somona</asp:listitem>
<asp:listitem>Symbol</asp:listitem>
</asp:listbox>
</td>
<td>
<!-- Filler -->
</td>
<td>
<asp:listbox id="InstalledFonts" width="100px" runat=server>
<asp:listitem>Times</asp:listitem>
<asp:listitem>Helvetica</asp:listitem>
<asp:listitem>Arial</asp:listitem>
</asp:listbox>
</td>
</tr> 
<tr>
<td>
<!-- Filler -->
</td>
<td>
<asp:button text="<<==" OnClick="RemoveAllBtn_Click" runat=server/>
<asp:button text="<--" OnClick="RemoveBtn_Click" runat=server/> 
<asp:button text="-->" OnClick="AddBtn_Click" runat=server/>
<asp:button text="==>>" OnClick="AddAllBtn_Click" runat=server/> 
<asp:label id="Message" forecolor="red" font-bold="true" runat=server/>
</td>
</tr>
<tr align=center>
<td align=center>
<asp:button text="提交" Onclick="result" runat=server/>
<!-- Filler -->
</td>
</tr>
</table>

</form>
</center>
</body>

</html>

写一个页面,在提交时候接收相关信息。我们在页面进入的时候取得传送过来的数值,用:

Request.Params("InstalledFonts")

来获得,具体来看我们的文件result.aspx的代码:
<!--源文件:form\web页面简介\result.aspx--> 
<html>
<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
If Not (Page.IsPostBack)
NameLabel.Text = Request.Params("InstalledFonts")
End If
End Sub
</script>

<BODY >
<h3><font face="Verdana">.NET->多事件处理!</font></h3>
<p>
<p>
<hr>
<form action="controls_NavigationTarget.aspx" runat=server>
<font face="Verdana"> 
Hi,你的选择是: <asp:label id="NameLabel" runat=server/>!
</font>
</form>
</body>
</html>

程序运行如下:

asp.net中关于web form的学习


当我们点击提交按钮的时候,将显示:

asp.net中关于web form的学习


2.1.4.2 例子二:AutoPostBack

PostBack属性在Page_Load事件中出现的,在一个用户请求结束后,如果页面重新Load,则返回一个true。这对初始化一个页面来讲是一件非常容易的事情,下面看我们的代码:

Sub Page_Load(Sender as Object,e as EventArgs)
If IsPostBack and ( TextBox2.Text = "")
TextBox2.Text="Hello" & TextBox1.Text & "!! 你好啊!"
End If
End Sub

如果IsPostBack返回一个真值并且TextBox2.Text为空,程序执行它下面的语句。在另外一个方面,我们设置一个标识:

<asp:TextBox id="TextBox1" Text="请在在这里输入你的名字!并按下<Tab>" 
AutoPostBack="True" Columns=50 runat="server"/>

我们设定AutoPostBack="True",自动PostBack,下面是我们的完整的代码(autopostback..aspx):

<!--源文件:form\web页面简介\autopostback.aspx-->
<html>
<head>
<script language="VB" runat="server">

Sub Page_Load(Sender as Object,e as EventArgs)
If IsPostBack and ( TextBox2.Text = "")
TextBox2.Text="Hello" & TextBox1.Text & "!! 你好啊!"
End If
End Sub

</script>
</head>
<body>
<center> 
<br><br><br>
<h3><font face="Verdana">.NET->AutoPostBack技术</font></h3>
<br><br> 
</center> 
<center> 
<form runat="server">
<p>
<asp:TextBox id="TextBox1" Text="请在在这里输入你的名字!并按下<Tab>" 
AutoPostBack="True" Columns=50 runat="server"/>
<p>
<asp:TextBox id="TextBox2" Columns=50 runat="server"/>
<p>
<asp:Button Text="提交" Runat="server"/> 
<p>
</form>
</center> 
</body>
</html>
访问如下:

asp.net中关于web form的学习

输入完成后,按下<Tab>键,得到如下结果:

asp.net中关于web form的学习


小结

在这一章中,我们对Web Form 页面进行了介绍,通过几个实例,我们分别介绍了Server 控件,HTML Server 控件,以及Web Form的事件模型。在下面的章节中,我们将对本章所涉及的概念进行更深入的讲解。