正 文

ASP.NET 2.0的新增服务、控件与功能


www.7dspace.com 更新日期:2006-5-17 22:30:40 七度空间 免费5位qq号码 免费Q币


  验证组

  验证控件是ASP.NET 1.x中更为卓越的创新。诸如RequiredFieldValidator和RegularExpressionValidator之类的控件使开发人员能够在客户端和服务器上进行更为智能的输入验证,而不必成为客户端脚本编写和浏览器DOM方面的专家。遗憾的是,版本1.x验证控件存在一个致命的缺陷,即:没有一种比较好的方法来将这些控件组合在一起,以便页面的一个部分上的验证程序可以重写该页面其他部分上的验证程序,并且无论其他验证程序的状态如何,都可以使回发发生。

  该问题由ValidationGroups1.aspx阐明,它包含在您可以针对本文下载的示例中。页面的设计者预计用户能够填写一组TextBox并回发到服务器,而不必同时填写另一个组,但它并不按此方式工作。除非所有输入字段都被填充,否则验证程序将抱怨不休,如图12所示。


图4 ASP.NET 1.x中的验证控件

  ASP.NET 2.0中的新验证组功能一劳永逸地解决了该问题。现在,可以使用ValidationGroup属性来组合验证控件。可以用相同的方式将按钮控件分配给组,并且当一个组中的所有验证程序都对输入感到满意时,它们才允许回发发生,当然,前提是回发是由验证程序同一组中的控件生成的。 ValidationGroups2.aspx演示了该技术(参见代码9)。从表面上看,该页面与ValidationGroups1.aspx完全相同。但在内部,它们却完全不同。现在,您可以填写任一组TextBox,并且通过单击TextBox验证组中的按钮进行回发。

<html>
<body>
<form runat="server">
<h1>New Users</h1>
<table>
<tr>
<td>User Name</td>
<td><asp:TextBox ID="NewUserName" RunAt="server" /></td>
<td><asp:RequiredFieldValidator ValidationGroup="NewUsers"
ControlToValidate="NewUserName" ErrorMessage="Required"
RunAt="server" /></td>
</tr>
<tr>
<td>Password</td>
<td><asp:TextBox ID="NewPassword1" TextMode="Password"
RunAt="server" /></td>
<td><asp:RequiredFieldValidator ValidationGroup="NewUsers"
ControlToValidate="NewPassword1" ErrorMessage="Required"
RunAt="server" /></td>
</tr>
<tr>
<td>Retype Password</td>
<td><asp:TextBox ID="NewPassword2" TextMode="Password"
RunAt="server" /></td>
<td><asp:RequiredFieldValidator ValidationGroup="NewUsers"
ControlToValidate="NewPassword2" ErrorMessage="Required"
RunAt="server" /></td>
</tr>
<tr>
<td>E-Mail Address</td>
<td><asp:TextBox ID="NewEMail" RunAt="server" /></td>
<td><asp:RequiredFieldValidator ValidationGroup="NewUsers"
ControlToValidate="NewEMail" ErrorMessage="Required"
RunAt="server" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button ValidationGroup="NewUsers"
Text="Create Account" OnClick="OnCreateAccount"
RunAt="server" /></td>
<td></td>
</tr>
</table>
<hr>
<h1>Existing Users</h1>
<table>
<tr>
<td>User Name</td>
<td><asp:TextBox ID="UserName" RunAt="server" /></td>
<td><asp:RequiredFieldValidator
ValidationGroup="ExistingUsers"
ControlToValidate="UserName" ErrorMessage="Required"
RunAt="server" /></td>
</tr>
<tr>
<td>Password</td>
<td><asp:TextBox ID="Password" TextMode="Password"
RunAt="server" /></td>
<td><asp:RequiredFieldValidator
ValidationGroup="ExistingUsers"
ControlToValidate="Password" ErrorMessage="Required"
RunAt="server" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button ValidationGroup="ExistingUsers"
Text="Log In" OnClick="OnLogIn" RunAt="server" /></td>
<td></td>
</tr>
</table>
</form>
</body>
</html>

<script language="C#" runat="server">
void OnCreateAccount (Object sender, EventArgs e) {}
void OnLogIn (Object sender, EventArgs e) {}
</script>

代码9 ValidationGroups2.aspx

  跨页面发送

  有关ASP.NET 1.x的最多抱怨是只允许页面回发到其本身。在版本2.0中,这一点通过引入跨页面发送而得到改变。要设置跨页面发送,您需要使用导致回发发生的控件的PostBackUrl属性来指定目标页面,如PageOne.aspx中的以下代码所示:

<html>
<body>
<form runat="server">
<asp:TextBox ID="Input" RunAt="server" />
<asp:Button Text="Test" PostBackUrl="PageTwo.aspx"
RunAt="server"
/>
</form>
</body>
</html>

  当被单击时,PageOne.aspx中的按钮将回发到PageTwo.aspx:

<html>
<body>
<asp:Label ID="Output" RunAt="server" />
</body>
</html>

<script language="C#" runat="server">
void Page_Load (Object sender, EventArgs e)
{
TextBox input = (TextBox) PreviousPage.FindControl ("Input");
Output.Text = "Hello, " + input.Text;
}
</script>

  PageTwo.aspx使用Page类的新PreviousPage属性来获取对起始页面的引用。对FindControl的简单调用将返回对PageOne.aspx中声明的TextBox的引用,以便可以检索用户的输入。

  默认情况下,System.Web.UI.Page.PreviousPage返回对引起回发的页面的弱类型化引用。但是,如果 PageOne.aspx是唯一能够向PageTwo.aspx发送的页面,则PageTwo.aspx可以使用新的@ PreviousPageType指令来获取对PageOne.aspx的强类型化访问,如下面的代码所示:

<%@ PreviousPageType TypeName="ASP.PageOne.aspx" %>
...

  小结

  ASP.NET 2.0还包含其他我尚未讨论的新功能。例如,内置的站点计数器服务使您能够记录站点使用情况的统计信息,并且在Webadmin.axd中或者在您自己的自定义GUI中查看它们。新的Web组件子系统提供了一个用于构建SharePoint服务器样式门户的框架。

  现在正是学习 ASP.NET 2.0的最佳时机,因为要在目前规划能够在将来轻松升级的体系结构,需要知道哪些功能即将问世(以及哪些功能不会问世)。您的ASP.NET 1.x应用程序无需修改就可以在2.0版本上运行,因为Microsoft已经允诺新平台将向后兼容旧平台。但是,未来将属于ASP.NET 2.0,而这一未来将意味着更加丰富的功能和更少的代码。有什么理由不接受它呢?

7页,页码:[1] [2] [3] [4] [5] [6] [7] 

上一篇:Yahoo!搜索里最热门关键词竟是Google
下一篇:Word入门动画教程105:用题注编制图表目录
ASP.NET 2.0的新增服务、控件与功能 作者: 来源:MSDN
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐