如何利用 IDataErrorInfo 实现数据校验

这篇具有很好参考价值的文章主要介绍了如何利用 IDataErrorInfo 实现数据校验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、定义:

ValidatesOnDataErrors 是一种在 WPF 中实现数据校验的方式,可以通过在 XAML 中设置属性 ValidatesOnDataErrors 为 True 来启用。
二、使用:
① 在 ViewModel 中实现 IDataErrorInfo 接口,该接口定义了两个属性:Error 和 Item[string columnName]
  —— Error 属性返回 ViewModel 中所有错误的描述信息;
  —— Item[string columnName] 属性返回指定属性的错误描述信息。
 
② 在 XAML 中设置 Binding 的 ValidatesOnDataErrors 属性为 True,例如:
<TextBox Text="{Binding Name, ValidatesOnDataErrors=True}" />

③ 在 ViewModel 中对需要校验的属性设置注解,例如:文章来源地址https://www.toymoban.com/news/detail-739816.html

public class Person : IDataErrorInfo
{
    public string Name { get; set; }
    public int Age { get; set; }

    public string this[string columnName]
    {
        get
        {
            string error = null;
            switch (columnName)
            {
                case "Name":
                    if (string.IsNullOrEmpty(Name))
                        error = "Name不能为空";
                    break;
                case "Age":
                    if (Age < 0 || Age > 120)
                        error = "Age必须在0到120之间";
                    break;
            }
            return error;
        }
    }

    public string Error
    {
        get { return null; }
    }
}
在this[string columnName]方法中,我们可以根据传入的列名判断该列的值是否合法:
—— 如果不合法则返回对应的错误信息。
—— 如果返回 null 或者空字符串,则表示该属性的值是有效的。
 
Error方法:我们可以判断整个数据模型的值是否合法,如果不合法则返回对应的错误信息.
 
注意:
如果在this[string columnName]方法中返回了错误信息,则Error方法不会被调用。
只有当所有属性的值都合法时,Error方法才会被调用。
因此,在实现IDataErrorInfo接口时,我们需要在this[string columnName]方法中尽可能地判断属性的值是否合法,以减少Error方法的调用次数。
 
 
 
④ 在界面上输入数据时,如果校验失败,会在控件旁边显示红色感叹号图标,鼠标悬浮在图标上可显示错误信息。

到了这里,关于如何利用 IDataErrorInfo 实现数据校验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • golang利用redis和gin实现保存登录状态,校验登录

    保存用户登录状态,一般常用的方式有两种 一、生成token,然后token保存到数据库用户表里面,每次登录的时候,自动更新,容纳后每次用的时候,去取出来校验,这种方式,数据库压力大,而且不是很灵活 二、每次登录生成token,然后token保存到Redis缓存中,每次都去校验,

    2024年01月20日
    浏览(32)
  • java 自定义xss校验注解实现

    自定义一个注解@Xss。名字随意 validator校验类:XssValidator。这个校验类要和上面的@Xss注解上的 @Constraint(validatedBy = { XssValidator.class })对应 具体使用在某个字段上加上注解;形如: 然后在控制层中增加@Validated注解校验就可以了  以上代码实现后。会自动针对某些增加了@Xss字符

    2024年02月14日
    浏览(33)
  • Java自定义校验注解实现List、set集合字段唯一性校验

    在开发过程中,前端给后端传递集合,并且需要保证集合的实体类中的某些字段必须是惟一的,不能重复。 传递的集合: 集合对应的实体类: 如果我们要保证传递的name或者card必须是唯一的,不能重复,应该如何实现呢,此时可以通过自定义注解的方式实现。 @Documented @Do

    2024年02月14日
    浏览(30)
  • 后端表情包依赖+自定义注解实现校验

    开发过程中遇到小程序登记信息填写文本时可能输入表情包,需要后端校验 由于字段太多,所以用自定义注解的方式来实现 步骤1:在pom文件中加入表情包依赖 步骤2: 自定义注解类 步骤3: 在请求的实体使用这个注解,需要要在controller中加入@Validated注解,校验才会生效

    2024年02月16日
    浏览(29)
  • Spring Boot 中自定义数据校验注解

    在 Spring Boot 中,我们可以使用 JSR-303 数据校验规范来校验表单数据的合法性。JSR-303 提供了一些常用的数据校验注解,例如 @NotNull 、 @NotBlank 、 @Size 等。但是,在实际开发中,我们可能需要自定义数据校验注解来满足特定的需求。本文将介绍如何在 Spring Boot 中自定义数据校

    2024年02月10日
    浏览(48)
  • spring boot实现实体类参数自定义校验

    安装依赖项 1、新建实体类 2、新建验证类 3、在控制器中 3.1 首先写入方法 @InitBinder注解的作用是在控制器方法执行之前,先执行有 @InitBinder注解的方法,使用WebDataBinder 把新建的验证规则绑定 3.2 在控制器接口参数中

    2024年02月12日
    浏览(30)
  • 技术干货|如何利用 ChunJun 实现数据实时同步?

    实时同步是 ChunJun 的⼀个重要特性,指在数据同步过程中,数据源与⽬标系统之间的数据传输和更新⼏乎在同⼀时间进⾏。 在实时同步场景中我们更加关注源端,当源系统中的数据发⽣变化时,这些变化会⽴即传输并应⽤到⽬标系统,以保证两个系统中的数据保持⼀致。这个

    2023年04月24日
    浏览(44)
  • 技术干货|如何利用 ChunJun 实现数据离线同步?

    ChunJun 是⼀款稳定、易⽤、⾼效、批流⼀体的数据集成框架,基于计算引擎 Flink 实现多种异构数据源之间的数据同步与计算。ChunJun 可以把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从⽽为企业提供全⾯的数据共享,目前已在上千家公司部署且稳定运⾏

    2024年02月05日
    浏览(28)
  • ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则

    首先,验证码扩展库是需要view扩展的 安装完成后,接着安装验证码扩展库 视图使用的说明: 页面使用的话,两种方式 侧重说明一下,使用第二种方式 我们只需要在控制器中提供一个方法,用于验证码的生成,然后前端将img的src属性修改为对应的方法路径即可 属性说明:

    2024年02月10日
    浏览(33)
  • GateWay网关自定义过滤器实现token校验完成统一鉴权

    gateWay---API网关,也可以称为业务网关,主要服务于微服务的; (1)  三大组件 路由(Route)         构建网关的基本模块,由id(唯一标示)、目标URI、一组断言、一组过滤器组成,如果断言为true,则匹配该路由   断言(Predicate)          可以使用它匹配来自HTTP请求的任何

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包