首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何扩展对视图模型的子项的验证?

如何扩展对视图模型的子项的验证?
EN

Stack Overflow用户
提问于 2016-09-23 03:43:43
回答 1查看 48关注 0票数 1

我的模型类Animal实现了INotifyDataErrorInfo来添加验证。我的视图绑定到一个具有属性SelectedAnimalAnimal类型的视图模型,如下所示:

视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<TextBox Text="{Binding SelectedAnimal.Epc, UpdateSourceTrigger=PropertyChanged, 
                   ValidatesOnNotifyDataErrors=True}" />

ViewModel

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public Animal SelectedAnimal
{
    get
    {
        return _animal;
    }
    set
    {
        Set(() => Animal, ref _animal, value);
    }
}

错误可视化工作得很好:

问题

我想添加额外的验证,在我的视图模型中完成的字段EPC,而不是在Animal类中。因此,我想添加另一个验证规则(例如,检查EPC是否唯一),即使用EPC TextBox可视化。

我怎样才能做到这一点?视图模型规则的验证错误也应该显示在EPC TextBox上。

我尝试过操纵类动物的验证错误列表,但没有成功。

更多信息

基于类ValidatableModel的验证

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-25 21:56:17

这是解决问题的一种方法:

  • 包装要在视图模型中扩展其验证的属性。 公共字符串Epc { get { _epc;} set { Animal.Epc = value;Set() => Epc,ref _epc,value,false);}
  • 向该属性添加两个自定义验证规则 CustomValidation(类型(ViewModel),"AnimalEpcValidate")
  • 将扩展的验证代码(不是由动物完成的)添加到ExtendedEpcValidate
  • 调用Animal.Epc验证并将结果添加到视图模型中的Epc验证结果 公共静态ValidationResult AnimalEpcValidate(object obj,ValidationContext上下文){ var aevm = context.ObjectInstance as ViewModel;//获取来自动物验证的animalErrors = aevm.Animal.GetErrors(" Epc ")?.Cast();//将来自动物验证的错误添加到您的Epc验证结果var error = animalErrors?.Aggregate(string.Empty,( current,animalError) => current+ animalError);//返回聚集错误Epc属性返回string.IsNullOrEmpty(错误)?ValidationResult.Success :新ValidationResult(错误,新列表{ "Epc“});}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39659965

复制
相关文章
使用rvm在Mac中安装ruby和rails
MacOS默认安装的是ruby 1.8.7,如果你想使用ruby 1.9.2的话,除了在官网下载源码编译安装外,可以使用rvm来协助安装。
EltonZheng
2021/01/22
3.2K0
使用Unicorn和Nginx在Ubuntu 14.04上配置Ruby on Rails应用程序
Ruby on Rails 是一个流行的 Web 应用程序框架,允许开发人员创建动态 Web 应用程序。本指南介绍如何在 Ubuntu 14.04 上使用Unicorn和 nginx 在服务器上部署Rails应用程序。
LPD6375
2018/08/29
7K0
使用Capistrano,Nginx和Puma在Ubuntu 14.04上部署Rails应用程序
Rails是一个用Ruby编写的开源Web应用程序框架。Nginx是一种高性能HTTP服务器,反向代理和负载均衡器,以其并发性,稳定性,可伸缩性和低内存消耗而著称。与Nginx一样,Puma是另一个极其快速且并发的Web服务器,内存占用非常小,但是为Ruby Web应用程序构建。
尘埃
2018/08/09
5K0
MYSQL 中间件分表是一个好主意?
中间件分表是不是一个好的主意?通过中间件来对MYSQL的数据进行分表是一个常见的对于大数量的解决的方案,通过中间件将应用的数据在中间层进行路由,通过路由将一张表的数据,映射到不同物理数据库上的表,通过应用设计的分片键将数据根据规则存储在不同的物理服务器上。实际上分布式数据库的基本原理也是这样。
AustinDatabases
2021/11/10
3130
MYSQL  中间件分表是一个好主意?
使用 pyenv 可以在一个系统中安装多个python版本
2016.01.06 21:02* 字数 82 阅读 24416评论 11喜欢 12
拓荒者
2019/03/11
3.2K0
Spring Batch 可以在一个 Step 中有多个 Tasklet 吗
根据 Spring Batch 的设计,在一个 Step 中只能执行一个 Tasklet。
HoneyMoose
2022/10/15
1.4K0
Spring Batch 可以在一个 Step 中有多个 Tasklet 吗
在一个组件中使用多个useEffect钩子
在一个组件中使用多个useEffect钩子。React Hooks允许在组件中使用任意数量的useEffect钩子来处理不同的副作用操作或监听不同的触发时机。
王小婷
2023/09/17
8940
CDN 适合您的 Rails 应用程序吗?适合大规模应用吗?
随着网站变得越来越复杂和内容繁多,页面加载时间已成为影响用户体验的关键因素。加快页面加载时间的一种解决方案是使用内容分发网络 (CDN)。在这篇博文中,我们将讨论什么是 CDN、为什么它很重要,以及您是否应该在 Rails 应用程序中使用它。
用户4235284
2023/10/14
1840
在 Flutter 移动应用程序中创建一个列表
Flutter 是一个流行的开源工具包,它可用于构建跨平台的应用。在文章《用 Flutter 创建移动应用》中,我已经向大家展示了如何在 Linux 中安装 Flutter 并创建你的第一个应用。而这篇文章,我将向你展示如何在你的应用中添加一个列表,点击每一个列表项可以打开一个新的界面。这是移动应用的一种常见设计方法,你可能以前见过的,下面有一个截图,能帮助你对它有一个更直观的了解:
用户1880875
2021/09/06
3.1K0
如何使用opencv和matplotlib把多个图片显示在一个窗体内
在使用opencv处理一些计算机视觉方面的一些东西时,经常会遇到把多张图片放在一个窗体内对比展示,而不是同时打开多个窗体,opencv作为一个专业的科学计算库,虽然也提供了方法,但使用起来并不是特别灵活而matplotlib作为一个专业的图形库则弥补了这个缺点,下面我们来看下使用。
我是攻城师
2018/07/23
2K0
如何使用opencv和matplotlib把多个图片显示在一个窗体内
在一个服务器上放多个网站会被分流吗?
服务器的带宽不足的话,网站的同时打开操作速度会受影响,此处不包括服务商提供的服务器,他们的服务器每个网站空间会专门设定带宽和运行内存;另外,同一个服务器同一个IP放多个网站在搜索引擎优化上会相互影响,如果其中一个站是垃圾站被百度K掉,同一服务器同一IP的其他站会受一定的影响。
璃笙0947
2021/10/19
4.3K0
在一个服务器上放多个网站会被分流吗?
如何在Ubuntu 14.04上使用PostgreSQL和Ruby on Rails应用程序
Ruby on Rails使用sqlite3作为其默认数据库,在许多情况下效果很好,但可能不适合您的应用程序。如果您的应用程序需要客户端/服务器SQL数据库(如PostgreSQL或MySQL)提供的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些其他步骤才能启动并运行它。
温浪
2018/10/22
3.4K0
如何使用opencv和matplotlib把多个图片显示在一个窗体内
在使用opencv处理一些计算机视觉方面的一些东西时,经常会遇到把多张图片放在一个窗体内对比展示,而不是同时打开多个窗体,opencv作为一个专业的科学计算库,虽然也提供了方法,但使用起来并不是特别灵活而matplotlib作为一个专业的图形库则弥补了这个缺点,下面我们来看下使用。
我是攻城师
2018/05/14
6.5K2
使用https和ssl就真的是一个安全的网站吗?
2014年,大多数SEO者都开始关注https,并在网站采用https的。原因很简单:当时Google发布了一篇文章,宣布HTTPS将作为排名信号对网站进行评价。所以几乎所有的SEO机构都建议他们的客户,将http的网站改为https。但实际上,它从来没有(也不应该是)作为提升排名的主要因素。
lublues
2018/05/11
2.2K0
使用https和ssl就真的是一个安全的网站吗?
如何在Ubuntu 14.04上使用MySQL和Ruby on Rails应用程序
Ruby on Rails使用sqlite3作为其默认数据库,在许多情况下效果很好,但可能不适合您的应用程序。如果您的应用程序需要客户端/服务器SQL数据库(如PostgreSQL或MySQL)的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些额外的步骤才能启动并运行它。
信姜缘
2018/10/22
4.9K0
使用SSH隧道保护三层Rails应用程序中的通信
在Ruby on Rails应用程序中,它可以轻易地映射到表示层的Web服务器,应用程序层的Rails服务器和数据层的数据库。在此设置中,应用程序层与数据层通信来检索应用程序的数据,然后通过表示层向用户显示该数据。
彼岸轮回
2018/08/13
5.7K0
如何在CentOS 6.5上使用Unicorn和Nginx部署Rails应用程序
在部署基于Rails的Web应用程序时,简单设计的应用程序服务器可以在几分钟内启动并运行。但是,如果您希望更好地控制服务器设置或想要尝试更灵活的新功能,那么使用分层的组件可以帮助您实现目标- 无论是面向未来的部署还是需要引入第三方元素,例如缓存服务器。
水门
2018/08/07
4.2K0
如何在Ubuntu 14.04上使用Puma和Nginx部署Rails应用程序
当您准备部署Ruby on Rails应用程序时,需要考虑许多有效的设置。本教程将帮助您部署Ruby on Rails应用程序的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Puma和Nginx。
宇cccc
2018/09/26
5.5K0
面试突击59:一个表中可以有多个自增列吗?
自增列可使用 auto_increment 来实现,当一个列被标识为 auto_increment 之后,在添加时如果不给此列设置任何值,或给此列设置 NULL 值时,那么它会使用自增的规则来填充此列。
磊哥
2022/06/30
1.9K0
面试突击59:一个表中可以有多个自增列吗?
同一个 gitlab-ci 文件能使用多个 runner 吗?
在 Gitlab CI 中,Runner 是 Job 的执行器, 也就是说 Job 的运行环境, 就是 Runner 的环境。
老麦
2022/12/24
2.8K0
同一个 gitlab-ci 文件能使用多个 runner 吗?

相似问题

为Android应用程序使用ORM是个好主意吗?

26

在Rails中使用Couchbase是个好主意吗?

11

在Doctrine 2 ORM中使用Yii框架是个好主意吗?

21

在一个方法中设置多个类成员是个好主意吗?

12

Rails:多态用户表使用AuthLogic是个好主意吗?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文