WCF RIA service 学习笔记三 数据验证

在涉及到数据的增删改的时候通常会一些验证,防止用户的错误输入,和恶意用户的输入,在asp.net框架中,服务器端提供了一套完整的验证控件,但这些控件几乎是没有什么人用,没有人喜欢在服务器端做验证,现在jQuery插件蛮好用的,验证很方便,在SL中却不一样,jQuery用不上,但又不能不作验证,还好SL中 RIA service在中间层提供了很好的数据验证方案。验证方式有以下几种:

DataTypeAttribute  类型验证


RangeAttribute 范围验证

 
RegularExpressionAttribute 表达式验证


RequiredAttribute 必填验证


StringLengthAttribute 长度验证

当用户操作服务器端数据,并向服务器提交操作时,这些添加的验证规则将自动映射到所操作的类属性,并作出判断,如果通不过验证,向客户端发送,验证出错消息,本主题介绍添加默认验证和自定义验证信息。

一,添加默认验证,添加默认验证非常简单,只需要作简单配置即可,直接在元数据上添加验证信息即可

验证
 1             [Required(ErrorMessage = "必填")]
 2             [RegularExpression(DomainServiceHelper.regString, ErrorMessage = DomainServiceHelper.regStringErrMsg)]
 3             public string MsgContent { getset; }
 4             
 5             [Required]            
 6             public Guid ThreadId { getset; }
 7 
 8             [Display(Name="主题", GroupName="主题")]
 9             [StringLength(50)]
10             [Required(ErrorMessage="必填")]
11             [RegularExpression(DomainServiceHelper.regString, ErrorMessage = DomainServiceHelper.regStringErrMsg)]
12             public string ThreadTitle { getset; }

二,添加自定义验证,

 第一步,添加一个代码共享文件,以*.shared.cs ,该代码文件将包含验证对象,

第二步,添加验证业务逻辑,注意:

该方法必须为 publicstatic,它必须返回 ValidationResult,以便指示验证检查的结果。在您定义自定义的验证类时,除了自动实现的属性外,您还必须至少提供一些代码,以便在客户端项目中正确生成该类。

下面的示例演示一个名为 RoleValidator的类,该类有一个验证 RoleValidator实体的方法 IsExistValid。当数据无效时, 将返回错误消息以及未通过验证的属性的名称。

第三步,

在要验证的实体或属性上,添加 CustomValidationAttribute 特性并且传递验证对象的类型以及执行验证的方法的名称。

下面的示例演示应用于实体的 CustomValidationA

自定义验证
1     [CustomValidation(typeof(RoleValidator), "IsExistValid")]
2     [MetadataTypeAttribute(typeof(aspnet_Roles.aspnet_RolesMetadata))]
3     public partial class aspnet_Roles
4     {
5     ///
6     }

ttribute 特性。验证对象类型为 RoleValidator,方法为 IsExistValid

posted @ 2011-04-30 00:50  渲起浪花  阅读(658)  评论(0编辑  收藏  举报