注意,在这个修改过的Message类中,Subject和Body属性都修饰以RequiredValidator属性。借助于这个RequiredValidator属性,这两个属性成为必需提供的属性。
此外还请注意,已经从该GetRuleViolations()方法中删除了原先的命令式代码。代之的是,AttributeValidation.Validate()方法被调用。这个方法针对每一个应用到Message类上的校验器属性都调用Validate()方法。如果至少一个校验器失败,那么该Message类校验即失败,并且抛出一个RuleViolationException型的异常。
很显然,你可以混合使用属性和非属性方法进行校验。对于普通的校验任务而言,你可以使用标准校验器,例如RequiredValidator,LengthValidator或RegularExpressionValidator。对于更复杂的类型校验,你可以编写命令式代码以执行校验。
四、 总结
在本篇中,我描述了一种把命令式和声明性相结合进行校验的方法。我相信,对于普通的校验任务方法最容易的方法应该是声明性方法。但是,对于更复杂的或专门的类型校验任务,你应该编写命令式校验代码。对于本系列文章中创建的论坛应用程序而言,我计划采取一种混合的方法实现最终的表单域的校验。
MVC框架开发Web论坛之另类表单校验篇
0
相关文章