zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    常用正则表达式大全
    js基础的自定义属性练习
    AngularJS中最重要的核心功能
    Architecture.the-reactive-manifesto
    iOS.ReactNative-3-about-viewmanager-uimanager-and-bridgemodule
    iOS.DistributionApp.1-mobile-provision-file[draft]
    iOS.DistributionApp.0-build-adhoc-distribution-for-tester
    iOS.ReactNative-5-make-react-native-to-support-dynamically-update
    OpenSource.organization-in-github
    iOS.Performance-trick-presentViewController-is-so-slow-in-didSelectRowAtIndexPath
  • 原文地址:https://www.cnblogs.com/langhua/p/2033233.html
Copyright © 2011-2022 走看看