Implement Property Value Validation in the Application Model 在应用程序模型中实现属性值验证
In this lesson, you will learn how to check whether or not a property value satisfies a particular rule. For this purpose, the DemoTask.Status property and the MarkCompleted Action will be used. This action should not be executed if the current task status is "NotStarted". Thus, the rule will be checked when executing the MarkCompleted Action.
在本课中,您将学习如何检查属性值是否满足特定规则。为此,将使用 DemoTask.Status 属性和标记完成操作。如果当前任务状态为"未启动",则不应执行此操作。因此,在执行"标记完成操作"时将检查规则。
Note
Before proceeding, take a moment to review the following lessons.
- Implement Property Value Validation in Code (XPO/EF)
- Place an Action in a Different Location
注意
在继续之前,请花点时间复习以下课程。
- 在代码中实现属性值验证 (XPO/EF)
- 将操作放置在其他位置
The validation functionality is provided by the Validation Module that was added in the Implement Property Value Validation in Code (XPO) lesson. When this module is added to the MySolution.Module project, the Validation node is available in the Application Model. This node defines the validation Contexts and Rules used in your application. You can use the Model Editor to add Rules and specify Contexts.
验证功能由在代码 (XPO) 课程中添加的验证模块提供。当此模块添加到 MySolution.模块项目时,验证节点在应用程序模型中可用。此节点定义应用程序中使用的验证上下文和规则。您可以使用模型编辑器添加规则并指定上下文。
Invoke the Model Editor for the MySolution.Module project. Navigate to the Validation | Rules node. It already contains child nodes that define the rules to be checked. For example, it may contain the "RuleRequiredField for Position.Title" rule that was implemented in the Implement Property Value Validation in Code (XPO) lesson. To add a new rule that checks specific criteria, right-click the Rules node and select Add... | RuleCriteria.
调用 MySolution.模块项目的模型编辑器。导航到验证 |规则节点。它已包含定义要检查的规则的子节点。例如,它可能包含在代码 (XPO) 课程中实现属性值验证中的"位置.Title.Title"规则。要添加检查特定条件的新规则,请右键单击"规则"节点并选择"添加..." |规则标准。

Note 注意
The descriptions of all available rule types are available in the Validation Rules topic.
所有可用规则类型的说明在验证规则主题中可用。
- For the newly created node, set the TargetType to "MySolution.Module.BusinessObjects.DemoTask", and set the Criteria property to "Status != 'NotStarted'". Set the ID property to "TaskIsNotStarted", TargetContextIDs to "MarkCompleted" and CustomMessageTemplate to "Cannot set the task as completed because it has not started".
- 对于新创建的节点,将目标类型设置为"MySolution.Module.业务对象.演示任务",并将"条件"属性设置为"状态!= "未启动"。将 ID 属性设置为"TaskIsNot 已启动",将目标上下文ID 设置为"标记为已完成",将自定义消息模板设置为"无法将任务设置为已完成,因为它尚未启动"。

Note 注意
The Criteria property value must be specified using the Criteria Language Syntax. To simplify this task, you can invoke the Filter Builder dialog by clicking the ellipsis button (
) to the right of the Criteria value. Within this dialog, you can visually design a criteria expression.
必须使用"条件语言语法"指定"条件"属性值。要简化此任务,可以通过单击条件值右侧的省略号按钮 (EllipsisButton) 来调用"筛选器生成器"对话框。在此对话框中,您可以直观地设计条件表达式。
The TargetContextIDs property is set to "MarkCompleted". This means that the rule will be checked when executing the Action whose ValidationContexts property is set to "MarkCompleted". So, set the Mark Completed Action's ValidationContexts property (in the ActionDesign | Actions | Task.MarkCompleted node) to "MarkCompleted".
"目标上下文"属性设置为"标记已完成"。这意味着在执行其验证上下文属性设置为"标记完成"的操作时,将检查规则。因此,设置"标记已完成操作的验证上下文"属性(在操作设计 |操作 |任务.标记已完成节点)到"标记已完成"。

Note 注意
You can also use the Save or Delete contexts, which are available by default. Rules with these contexts are validated when an object is saved or deleted, respectively (see Validation Rules).
您还可以使用默认可用的"保存或删除"上下文。分别保存或删除对象时,将验证具有这些上下文的规则(请参阅验证规则)。
Run the WinForms or ASP.NET application. Assign the "Not Started" value to the Status property of one of the existing DemoTask objects. Click the MarkCompleted button. The following Validation Error dialog will be displayed.
运行 WinForms 或ASP.NET应用程序。将"未启动"值分配给现有演示任务对象之一的状态属性。单击"标记已完成"按钮。将显示以下验证错误对话框。

Note 注意
Generally, you can add the required rule to a class or property in code (see Implement Property Value Validation in Code (EF \ XPO)). The approach defined above is useful when the class sources are inaccessible.
通常,可以将所需的规则添加到代码中的类或属性(请参阅在代码中实现属性值验证 (EF = XPO)。)。当类源无法访问时,上面定义的方法非常有用。
You can see the changes made in this lesson in the Model Editor invoked for the Model.DesignedDiffs.xafml file located in the Main Demo | MainDemo.Module project. The MainDemo application is installed in %PUBLIC%\Documents\DevExpress Demos 19.2\Components\eXpressApp Framework\MainDemo by default. The ASP.NET version is available online at http://demos.devexpress.com/XAF/MainDemo/
您可以在本课中为模型调用的模型编辑器中所做的更改。主演示模块项目。主演示应用程序安装在%PUBLIC%\Documents\DevExpress Demos 19.2\Components\eXpressApp Framework\MainDemo by default. The ASP.NET version is available online at http://demos.devexpress.com/XAF/MainDemo/
.
Implement Property Value Validation in the Application Model 在应用程序模型中实现属性值验证的更多相关文章
- Implement Property Value Validation in Code 在代码中实现属性值验证(XPO)
This lesson explains how to set rules for business classes and their properties. These rules are val ...
- CompareValues标签对Model中的属性进行验证
在Asp.Net MVC中实现CompareValues标签对Model中的属性进行验证 在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现Model两个 ...
- 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证
在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...
- <s:property="a" value=""/>取的<s:debug></s:debug>中的value stack中的属性值
<s:property="a" value=""/>取的<s:debug></s:debug>中的value stack中 ...
- 在Asp.Net MVC中实现CompareValues标签对Model中的属性进行验证
在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现Model两个中两个属性值的比较验证 具体应用场景为:要对两个属性值的大小进行验证 代码如下所示: /// ...
- 在.Net MVC中自定义ValidationAttribute标签对Model中的属性做验证
写一个继承与ValidationAttribute类的自定义的验证方法 MVC中传递数据时,大多数都会用Model承载数据,并且在传到控制器后,对Model进行一系列的验证. 我平时经常使用的判断方法 ...
- spring boot 读取配置文件(application.yml)中的属性值
在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注 ...
- Convert Application Model Differences
The eXpressApp Framework is based on the modules concept. As a rule, every module implements a certa ...
- java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'
java.lang.IllegalStateException: Failed to load property source from location 'classpath:/applicatio ...
随机推荐
- Java实现微信小程序支付(完整版)
在开发微信小程序支付的功能前,我们先熟悉下微信小程序支付的业务流程图: 不熟悉流程的建议还是仔细阅读微信官方的开发者文档. 一,准备工作 事先需要申请企业版小程序,并开通“微信支付”(即商户功能).并 ...
- SpringBoot微服务电商项目开发实战 --- api接口安全算法、AOP切面及防SQL注入实现
上一篇主要讲了整个项目的子模块及第三方依赖的版本号统一管理维护,数据库对接及缓存(Redis)接入,今天我来说说过滤器配置及拦截设置.接口安全处理.AOP切面实现等.作为电商项目,不仅要求考虑高并发带 ...
- js截取指定字符前面或后面的内容
function getCaption(obj,state) { var index=obj.lastIndexOf("\-"); if(state==0){ obj=obj.su ...
- 基于vue+leaflet+echart的足迹分享评论平台
(其实题目是随便取的,目的只是用来证明Vue+leaflet+springboot技术栈的可行性) 效果 小专栏不支持上传视频?想看的话可以去我的知乎看最新的文章,那个应该可以.在这里 主要功能描述 ...
- oopday02(面向对象-构造方法&静态static)
面向对象之封装 01_面向对象(构造方法Constructor概述和格式) * A:构造方法概述和作用 * 给对象的数据(属性)进行初始化 * B:构造方法格式特点 * a:方法名与类名相同(大小也要 ...
- linux中批量添加文件前缀的操作
需要在文件夹内所有txt文件的文件名前面添加"gt_"; 就是由原来的文件“xxx.txt”变成“gt_xxx.txt”: 网上搜来的脚本如下: for i in `ls`; do ...
- Linux ipv6 无状态 设置为 eui64
Linux ipv6 无状态 设置为 eui64 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-08-22. 无状态的ipv6有eui64和stable-privacy模式, 在家 ...
- 从. NET 和 Java 之争谈 IT 这个行业
一.有些事情难以回头 开篇我得表名自己的立场:.NET JAVA 同时使用者, 但更加偏爱. NET. 原因很简单 NET 语言更具开放性, 从开源协议和规范可以看出; 语言更具优势严谨; 开发工具 ...
- Redis未授权访问利用
转载:https://www.cnblogs.com/-qing-/p/10978912.html 0x01 kali安装redis 下载 wget http://download.redis.io/ ...
- STM32-24位AD7799驱动之手册代码详解,支持模拟SPI和硬件SPI
1.AD7799介绍 AD7799结构图如下所示: 其中REFIN参考电压建议为2.5V, REFIN电压低于0.1V时,则差分输入ad值就无法检测了,如下图所示: 注意: 如果REG_CONFIG的 ...
) to the right of the Criteria value. Within this dialog, you can visually design a criteria expression.