【IT168 技术文档】
摘要:也许大家都已经习惯了使用ASP.NET中的验证控件进行数据有效性的验证,但是验证控件的验证无法与我们的自定义的实体类结合起来,两者属于不同层面的验证。在Enterprise Library 3.0中有了Validation Application Block,可以轻松的实现页面验证与类验证的结合。
1.编写实体类,本文我使用Enterprise Library 3.0 QuickStarts中的例子,采用Atteribute验证的方式(采用配置文件来实现也是一样的),分别设置验证规则集合、错误信息提示等属性,代码如下:
2.添加PropertyProxyValidator控件。在工具箱中添加新项,选择Microsoft.Practices.EnterpriseLibrary.Validation.Integration.AspNet,默认的安装路径为C:\Program Files\Microsoft Enterprise Library 3.0 - January 2007 CTP\Bin,添加完成后可以在工具箱中看到PropertyProxyValidator控件。
3.编写ASPX页面,如下图所示: 代码如下:
public class Customer
...{
private string firstName;
private string lastName;
private DateTime dateOfBirth;
private string email;
private int rewardPoints;
[StringLengthValidator(1, 50, Ruleset = "RuleSetA", MessageTemplate="First Name must be between 1 and 50 characters long")]
public string FirstName
...{
get ...{ return firstName; }
set ...{ firstName = value; }
}
[StringLengthValidator(1, 50, Ruleset = "RuleSetA", MessageTemplate = "Last Name must be between 1 and 50 characters long")]
public string LastName
...{
get ...{ return lastName; }
set ...{ lastName = value; }
}
[RelativeDateTimeValidator(-120, DateTimeUnit.Year, -18, DateTimeUnit.Year, Ruleset = "RuleSetA", MessageTemplate="Must be 18 years old")]
public DateTime DateOfBirth
...{
get ...{ return dateOfBirth; }
set ...{ dateOfBirth = value; }
}
[RegexValidator(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", Ruleset = "RuleSetA")]
public string Email
...{
get ...{ return email; }
set ...{ email = value; }
}
[Int32RangeValidator(0, 1000000, Ruleset = "RuleSetA", MessageTemplate = "Rewards points cannot exceed 1,000,000")]
public int RewardPoints
...{
get ...{ return rewardPoints; }
set ...{ rewardPoints = value; }
}
}
<div>
<h3>
Validation Application Block: ASP.NET Integration QuickStart</h3>
<table>
<tr>
<td style="width: 100px">
First Name:</td>
<td style="width: 508px">
<asp:TextBox ID="firstNameTextBox" runat="server" Width="235px"></asp:TextBox>
<br />
</td>
</tr>
<tr>
<td style="width: 100px; height: 21px">
Last Name:</td>
<td style="width: 508px; height: 21px">
<asp:TextBox ID="lastNameTextBox" runat="server" Width="235px"></asp:TextBox><br />
</td>
</tr>
<tr>
<td style="width: 100px">
Date Of Birth:</td>
<td style="width: 508px">
<asp:TextBox ID="dateOfBirthTextBox" runat="server"></asp:TextBox><br />
</td>
</tr>
<tr>
<td style="width: 100px">
E-mail:</td>
<td style="width: 508px">
<asp:TextBox ID="emailTextBox" runat="server" Width="235px"></asp:TextBox><br />
</td>
</tr>
<tr>
<td style="width: 100px; height: 25px;">
Rewards Points:</td>
<td style="width: 508px; height: 25px;">
<asp:TextBox ID="rewardsPointsTextBox" runat="server"></asp:TextBox><br />
</td>
</tr>
<tr>
<td style="width: 100px">
</td>
<td style="width: 508px">
<asp:Button ID="submitButton" runat="server" Text="Submit" OnClick="submitButton_Click" />
<asp:Label ID="validationResultsLabel" runat="server"></asp:Label></td>
</tr>
</table>
</div>