(五)XAF应用验证模块.docx_第1页
(五)XAF应用验证模块.docx_第2页
(五)XAF应用验证模块.docx_第3页
(五)XAF应用验证模块.docx_第4页
(五)XAF应用验证模块.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XAF应用开发教程(五)验证模块数据验证是应用程序开发中使用频率最高的功能模块,本节详细介绍一下XAF中如何使用验证模块。XAF 验证模块内置了下面的一些验证规则:验证规则类型说明RuleCombinationOfPropertiesIsUnique (RuleCombinationOfPropertiesIsUniqueAttribute)要求多个属性的值组合在一起时是唯一的.RuleCriteria (RuleCriteriaAttribute)要求满足指定的条件. 如:座机或手机必须填写一个。 条件为:坐机 is not null or 手机 is not nullRuleFromBoolProperty (RuleFromBoolPropertyAttribute)要求指定的boolean类型的属性的值必须为真.比如注册用户时必须选中同意一系列的条款。RuleIsReferenced (RuleIsReferencedAttribute)要求必须被引用的.RuleObjectExists (RuleObjectExistsAttribute)要求对象是必须存在的.RuleRange (RuleRangeAttribute)要求值必须在一定的范围内.RuleRegularExpression (RuleRegularExpressionAttribute)要求输入的值必须是满足正则表达式的.RuleRequiredField (RuleRequiredFieldAttribute)要求值是必填写的.RuleStringComparison (RuleStringComparisonAttribute)要求字符串必须符合某种比较的条件.RuleValueComparison (RuleValueComparisonAttribute)要求值必须是符合某种比较条件.RuleUniqueValue (RuleUniqueValueAttribute)要求值必须是唯一的.为了更直观的理解,我们先上一个效果图。从必填验证说起:如上图所示,在按下了保存、保存关闭、保存新建 按钮之后,会出现一个错误提示信息。同时,在姓名文本框前面会出现一个红色报错的图标。这个效是怎么实现的呢? public class 客户.private string _姓名; RuleRequiredField(CustomMessageTemplate =请填写姓名!) public string 姓名 get return _姓名; set SetPropertyValue(姓名, ref _姓名, value); .我在前面使用的项目中,打开了客户.cs文件,并在客户类的姓名属性上增加了一行RuleRequiredField(CustomMessageTemplate =请填写姓名!)是的只需要这样一行就可以了。这样,XAF为我们生成了一条验证规则,规则的名称是自动指定的,一系列相关的也都用了默认值,我们修改一下代码,指定下名称:RuleRequiredField(客户姓名必填, DefaultContexts.Save,CustomMessageTemplate =请填写姓名!)第一个参数为规则的名称,DefaultContexts.Save是指在保存这个上下文时才执行验证。编译后,打开xafml文件,可以看到这么规则的所有信息:按照左侧红框中的路径,最终点击结点“客户姓名必填”后,右侧出现了此规则的详细信息,其中格式这一分组内的设置都是显示消息类的。可以进行一下汉化。带有地球图标的,都是需要本地化的属性。行为一栏中:InvertResult:反转结果,当设置为True时,即验证的结果如果是没通过,则认为通过,即是否通过的结果取反,这个选项在必填验证是没什么用的,我们不可能做一个验证规则要实现某些属性必须不能填值的。ResultType:Error,Warning,Information三种,其中:Error:当不满足验证规则时,报个错误出来,并且不能继续操作程序。上面演示的验证规则就是这样效果了。Warning:当不满足验证规则时,显示一个警告信息,确认后,继续程序运行。比如:客户信息中有个地址属性,当然我们是希望填写地址的,如果不填写,有市场活动举行时,我们有一些礼品就没办法寄送给客户。此时,我们可以增加一条这样的规则,但如果确定得不到地址,也只能不填写了,但要提示操作人员。按下保存时,可以看到地址文本框前面出现了一个黄色感叹号图标。在错误信息提示的位置,出现了一个checkbox,文字是Ignore warnings,当选中了checkbox后,再次按保存时,则不在提示此信息了。下面我们再来看看将ResultType修改为Information时的效果:代码: private string _地址; RuleRequiredField(ResultType = ValidationResultType.Warning,CustomMessageTemplate =如果不填写地址,市场活动礼品将无法送达,确认不填写吗?) public string 地址 get return _地址; set SetPropertyValue(地址, ref _地址, value); 由于姓名没有填写,触发了必填规则,同时显示出了地址的信息,但可以不去纠正,只是显示出信息。当,姓名填写了时,地址的消息是不会显示的,此时,点击Validation按钮会看到提示信息: private string _地址; RuleRequiredField(ResultType = ValidationResultType.Information,CustomMessageTemplate =如果不填写地址,市场活动礼品将无法送达,确认不填写吗?) public string 地址 get return _地址; set SetPropertyValue(地址, ref _地址, value); 接下来看xafml中规则的 SkipNullOrEmptyValues,这个选项在必填验证时没有意义,但在别的规则中是有意义的,比如:地址必须以“上海市”开头,如果没有填写则不验证,那么把此值设置成True即可。代码: private string _地址; RuleRequiredField(ResultType = ValidationResultType.Information,CustomMessageTemplate =如果不填写地址,市场活动礼品将无法送达,确认不填写吗?) RuleStringComparison(地址必须开始于上海市, DefaultContexts.Save, StringComparisonType.StartsWith,上海市,SkipNullOrEmptyValues =true) public string 地址 get return _地址; set SetPropertyValue(地址, ref _地址, value); 如果没有填写地址时,规则并不会生效。保存是直接通过的,这就是SkipNullOrEmptyValues的作用。TargetContextIDs:这个属性是个字会串,可以随意填写。首先来看一下什么是Context,即上下文:上下文是指让验证规则生效的一个环境,比如保存数据时,审核数据时,删除数据时,入库时,等等 ,但系统其实只提供了两个默认的上下文环境,我们前面使用了DefaultContexts.Save 这个枚举,可以看他的定义(我使用的是Reflector查看的):Flagspublic enum DefaultContexts Delete = 2, Save = 1可以看到这个枚举是Flags,也就是说,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论