• WPF Enterprise Library 验证


      WPF自己带了验证功能,就是我们去继承ValidationRule然后重写Validate方法,自定义我们的验证规则.那如果我们有 n个需要验证的地方,是不是就要重写n次Validate的方法呀,那样的话验证的类文件会很多.

      另一种就是继承IDataErrorInfo,这个挺好,在每个属性上自己写规则很好,而且也实现了与UI的分离,但是就像刚才说的,还得自己写.

      用Enterprise Library,我们可以很轻松的实现验证.当然他有很多功能,我们现在只说他的验证功能.这个你可以在网上下载安装一下,然后引用他的dll,咋用的是验证的功能所以引用这两个就行.安装的时候最好记下你的安装路径,否则安装好以后想找到这两个dll就不容易了.我用的是5.0他支持.net4.0和3.5.

      1然后我们需要写一个类

    public  class BaseValidationEntity<T> :  IDataErrorInfo
    {
    //返回null或空字符串,验证错误
    //Error 属性用于指示整个对象的错误,实现IDataErrorInfo
    public string Error
    {
    get { return null; }
    }
    //而索引器用于指示单个属性级别的错误,实现IDataErrorInfo,用索引器的好处是什么我没理解,说他能像数组一样的处理对象,我就是不知道既然是对象为什么要像数组一样被处理
    public string this[string name]
    {
    //这块返回验证的信息,如果没有返回的值就返回null,那就是没有通过验证,如果有返回的值那就返回第一个值,就是页面上显示的验证的信息,比如说不能为空了等等
    get
    {
    string result = null;
    Validator<T> validator = ValidationFactory.CreateValidator<T>();
    ValidationResults results = validator.Validate(this);
    if (results.Count > 0)
    {

    return results.First().Message;
    //foreach (var item in results)
    //{
    // result += item.Message;
    //}
    }
    return result;
    }
    }

    //这个用来查看是否通过验证,如果没有返回值了,说明通过了所以就是true
    public bool Valid()
    {
    Validator<T> validator = ValidationFactory.CreateValidator<T>();
    ValidationResults results = validator.Validate(this);
    return results.Count == 0;
    }
    }

    这个类我们需要继承IDataErrorInfo,因为我们在页面上显示错误信息的时候需要用到他.

    2然后哪些页面需要用到验证我们之间继承就可以了.

    比如,

    我们在需要验证的属性上面写标签,他主要有下面几种验证

    ContainsCharactersValidatorAttribute——是否包含字符串验证

    DateTimeRangeValidatorAttribute——时间范围验证

    DomainValidatorAttribute——通过检查验证对象,判断它是否属于一个集合

    EnumConversionValidatorAttribute——检查字符串是否可以转换成枚举中的某一项

    HasSelfValidationAttribute——自我验证,只能用于类,为SelfValidationAttribute服务

    IgnoreNullsAttribute——可为空验证

    NotNullValidatorAttribute——不为空验证

    ObjectCollectionValidatorAttribute——对象集合类型验证

    ObjectValidatorAttribute——对象类型验证

    PropertyComparisonValidatorAttribute——属性比较验证

    RangeValidatorAttribute——范围验证,判断对象是否在一个指定范围内

    RegexValidatorAttribute——正则表达式验证

    RelativeDateTimeValidatorAttribute——检查日期是否属于一个范围相对于当前时间或日期

    SelfValidationAttribute——对调用一个方法进行自验证

    StringLengthValidatorAttribute——字符串长度验证

    TypeConversionValidatorAttribute——类型转换验证,判断是否可以转换成指定类型

    ValidatorComposition——验证组合器,可以将不同的验证组合在一起

    当然他也支持自定义验证扩展,这点很好.

    3然后我们需要在页面上把错误信息呈现出来

    这样就可以了,

    4当然如果验证没通过就不能让他提交信息,我们可以

    我们在每次属性改变的时候都去调用Valid这个方法就是验证基类里面的,如果为true说明没有返回提示信息了.那就可以继续下面的操作了,这个Login方法大家在练习的时候直接可以写click事件,我是用的Caliburn.Micro,所以才写成这样.

    WPF的验证很灵活,这个是我感觉比较好的一种验证.大家有好的方法,咋可以一起讨论.

  • 相关阅读:
    指令级并行:动态调度技术
    单纯形法的矩阵描述
    QTextEdit回车事件重写
    整数规划
    全退
    流水线分析例题
    操作系统期中复习思考题
    流水线技术概述
    中心极限定理
    大数定律
  • 原文地址:https://www.cnblogs.com/lijin/p/3215066.html
Copyright © 2020-2023  润新知