




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.4平台通用配置深圳市信息职业技术学院——验证规则配置实现目
录验证规则开发实现示例01框架验证规则实现逻辑介绍02框架验证规则实现03经验总结04知识回顾根据需求进行主从表功能UML建模;主从表功能的开发实现步骤;初始菜单配置;运行项目生成数据库表、序列、更新元数据和配置菜单;能够独立进行主从表功能的问题修复;能够对功能进行扩展,完成一主多从、主从孙关系的功能开发实现学习目标通过本节学习可以:掌握框架验证规则包括哪几种实现方式,不同的实现方式有什么差异?掌握不同验证规则的开发实现步骤;能够修复验证规则开发过程中的bug。01验证规则开发实现示例思考题通过前面课程的学习,我们知道框架验证可以在哪里进行配置实现?可以在实体属性中标记规则特性,然后进行实体元数据的更新。业务描述业务描述读者分类增加验证:
读者分类被读者管理引用后,不允许删除读者管理增加验证:1、读者编号、姓名联合验证唯一2、手机号验证输入格式3、已借书数量不能大于读者分类中维护的可借书数量开发实现-读者分类被读者管理引用后不允许删除实现逻辑:可以用框架的规则去实现,引用后不允许删除使用框架的引用规则,需要自己在服务端建一个规则类,以Rule进行结尾,继承NoReferencedRule进行实现,如下图实现:开发实现开发实现-读者管理中读者编号、姓名联合验证唯一实现逻辑:该验证的实现可以使用非重复验证来实现,这里以规则类的方式开发实现:开发实现开发实现-读者管理中手机号输入格式验证实现逻辑:该验证的实现可以使用实体规则进行验证,也是需要建一个规则类进行实现:开发实现开发实现-已借书数量不能大于读者分类中维护的可借书数量实现逻辑:该验证的实现也可以通过实体规则进行验证。开发实现注意:以上所有的规则实现都要进行实体元数据的更新才会生效,修改了对应的规则需要重新进行实体元数据的更新。思考题前面示例验证规则的实现中,继承的父类包括哪些?02框架验证规则实现逻辑介绍框架验证规则实现逻辑介绍通过前面单表、主从表的开发和刚刚的验证规则示例中可以看出,我们的规则可以在实体属性中标记特性进行实现,也可以在服务端定义规则类进行实现,之间有什么差异呢?从实现可以看出,在实体中标记的特性只能是对该属性的简单验证;对于复杂验证或者是属性之间的联合验证无法在实体中标记特性,就需要引入规则类进行实现。两者的相同点就是:实现完成后都需要进行实体元数据的更新才会生效。框架验证规则实现逻辑框架验证规则实现逻辑介绍框架验证规则逻辑的实现:框架针对单个属性的简单验证是在实体属性中标记特性进行实现的(这些也可以在验证方法中进行实现),框架在生成表格或者表单的时候,将属性的这些特性和属性对应Ext控件一起生成返回到前端,然后前端解析将可以转换为Ext控件的验证规则转换为控件规则,在操作控件时,在对应控件中有红色框框显示(这种是做了前后端双重验证);不能转换的,保存数据时给出具体的异常提示(只做了后台验证)。对于复杂的验证,如规则类中实现的规则,是无法解析为对应控件的验证,则是在后台进行数据的验证处理,即通过RF.Save()保存数据前,去调用实体对应的验证,验证不通过给出具体的异常提示(走的后台验证)。框架验证规则实现逻辑03框架验证规则的实现思考题框架验证规则的实现方式包括几种?分别是?框架验证规则实现方式框架通用的验证方式,框架提供了三种实现方式,分别为运行时规则、标准规则和预编译规则。1、运行时规则:1)通过在实体元数据模块进行运行时配置的规则,如字段长度、非空等验证。如果是部署的服务,添加或者修改了配置规则,需要重启服务。2)在实体属性中标记特性,只能标记非空,非重复,最大长度,最小长度,最大值和最小值,标记的特性是针对单个属性的验证,标记完成后需要对实体元数据进行更新操作,验证才会生效。说明:该种方式实现的规则如果在实体元数据规则类中把对应规则禁用了,即使在代码中标记了对应的规则,也不会生效;规则删除后,实体元数据的规则不能自动删除,需要手动把对应的规则删除或者是禁用。验证规则的实现方式框架验证规则实现方式2、标准规则:在实体配置中重写AddValidations()方法实现规则验证,编写代码运行项目后立即生效,不可配置。3、预编译规则:通过C#代码的方式实现验证规则,然后在实体元数据功能进行更新并配置启用。包含的规则父类:实体规则(继承EntityRule<T>)、非重复规则(继承NotDuplicateRule<T>)、删除被引用规则(继承NoReferencedRule<T>)说明:预编译规则也需要在实体元数据中进行更新才会生效,如果规则的类名修改了,原来类名生成的规则不会自动删除,会根据新的类名重新生成一条规则。验证规则的实现方式运行时规则实现1、在“实体元数据(数据字典)”菜单的“实体规则”页签中,维护规则,做基础的验证。运行时规则实现说明:在项目开发阶段不建议在该界面直接维护规则。运行时规则实现2、在实体属性中配置验证规则,包含的验证:
非空验证:[Required]
非重复验证:[NotDuplicate]
最大长度验证:[MaxLength(40)]
最小长度验证:[MinLength(2)]
最大值验证:[MaxValue(9999)]
最小值验证:[MinValue(1)]
示例:运行时规则验证示例,如读者分类中类别号的验证:运行时规则实现运行时规则实现注意事项:1、验证要生效,必须进行实体元数据的更新,且规则状态是启用状态才会生效;2、实体属性配置的规则删除,元数据生成的规则不会自动删除,需要手动删除或者禁用,否则规则还会生效;3、引用属性的非空验证是通过属性的类型进行验证的,不要在引用属性中标记非空特性[Required],否则非空验证的提示会提示两次。运行时规则实现标准规则实现标准规则是在实体配置中重写添加验证方法AddValidations进行实现:标准规则实现1、标准规则中可以实现运行时规则和预编译规则中实现的所有规则(虽然可以实现,但是被引用删除规则建议还是使用预编译中删除被引用的规则实现,减少开发的代码量);2、标准规则与运行时和预编译规则的差异:标准规则不可配置,运行时和预编译规则可配置。标准规则实现标准规则中可以实现的验证:1、非空验证;rules.AddRule(属性名,newRequiredRule());2、非重复验证,单个和多个属性的非重复验证;
单个属性非重复验证:rules.AddRule(属性名,newNotDuplicateRule());
多个属性非重复验证
rules.AddRule(newNotDuplicateRule()
{Properties=
{
属性名1,
属性名2
},MessageBuilder=(e)=>
{return“验证不通过的提示信息".L10N();
}
});标准规则实现标准规则实现3、长度验证,包括最小和最大长度的设置;
rules.AddRule(属性名,newStringLengthRangeRule(){Min=2,Max=40});4、最大最小值验证;rules.AddRule(属性名,newNumberRangeRule(){Min=1,Max=100});5、正则表达式验证;
rules.AddRule(属性名,newRegexMatchRule(){Regex=newRegex(@"^((\d{3}-\d{8}|\d{4}-\d{7,8})|(0?(13|14|15|17|18|19)[0-9]{9}))$"),MessageBuilder=(o)=>{ return"电话号码不正确";}});标准规则实现标准规则实现6、实体验证
rules.AddRule(newHandlerRule(){Handler=(o,e)=>{
//这里可以进行查数据库进行操作,当前实体的数据不能满足验证判断要求时可查数据库判断varreader=o.CastTo<实体类>();if(判断的条件)
e.BrokenDescription=“具体的验证提示信息".L10nFormat(reader.Name);}});标准规则实现标准规则实现示例读者管理中通过标准规则验证实现如下验证:读者编号非空,姓名非空,单位非空读者编号,姓名联合验证唯一读者编号和姓名最大可输入长度为20手机号需要验证格式已借书数量不能大于可借书数量标准规则实现示例预编译规则实现预编译规则也是需要对实体元数据进行更新,编写的规则才会生效;1、非重复规则:继承NotDuplicateRule<T>,在构造函数中实现非重复逻辑预编译规则实现[System.ComponentModel.DisplayName(“规则名称信息")][System.ComponentModel.Description(“规则描述信息")]
public
class
XXXRule:NotDuplicateRule<T>
{
public
XXXRule()
{Scope=EntityStatusScopes.Update|EntityStatusScopes.Add;Properties.Add(属性1);Properties.Add(属性2);MessageBuilder=(e)=>
{
vart=easT;//e为对应的实体
return
“验证不通过的提示信息[{0}]”.L10nFormat(t.A);//{0}为参数设置
};
}
}规则作用域,用Scope进行设置,默认为Add和Update。非重复验证的属性,只能设置数据库存在的字段属性,且不能是复杂属性提示信息,可不设置,非重复框架有默认的提示。预编译规则实现2、被引用不允许删除:继承NoReferencedRule<T>,在构造函数中实现被引用不能删除的逻辑。预编译规则实现[System.ComponentModel.DisplayName(“规则名称信息")][System.ComponentModel.Description(“规则描述信息")]
public
class
XXXRule:NoReferencedRule<T>
{
public
XXXRule()
{Scope=EntityStatusScopes.Delete;Properties.Add(被引用的属性名);MessageBuilder=(e,c)=>
{
varcat=easT;
return
“被引用删除的提示信息{0}”.L10nFormat(c);
};
}
}规则作用域,用Scope进行设置,默认为删除,通常不用设置。只能是引用Id属性,通过其他实体.引用Id属性名加载出来。验证不通过的提示信息,引用不允许删除框架有默认提示信息,如果想修改框架的提示信息可通过此属性添加,其中e为实体,c为被引用的次数。预编译规则实现3、实体规则:继承EntityRule<T>,在这个规则中可以实现所有规则。预编译规则实现[System.ComponentModel.DisplayName("规则名称信息")][System.ComponentModel.Description("规则描述信息")]
public
class
XXXRule:EntityRule<T>
{
public
XXXRule()//构造函数
{Scope=EntityStatusScopes.Add|EntityStatusScopes.Update;//规则作用域默认为新增和修改,如果是只在添加操作生效,可以对该属性进行规则设置ConnectToDataSource=false;
}
protected
override
voidValidate(IEntityentity,RuleArgse)//验证方法
{ //这里可以调用控制器方法对数据库进行操作
vart=entityasT;//entity为当前验证的实体
if(验证的条件)e.BrokenDescription=“验证不通过的提示信息{0}".L10nFormat(t.A);
}
}是否连接数据仓库,默认为false,如果在验证方法中有对数据库进行操作,该属性要设置为true。思考题标准规则的实体验证和预编译规则的标准规则,都能实现所有的验证,有什么区别?04经验总结经验总结标准验证AddValidations和预编译验证(在服务端编写验证规则类)是两种不一样的实现方式,同一逻辑用两种方式验证的效果是一样的,只是其中一种是代码所见即所得,一种是可配置;在项目上对应的验证逻辑,根据实际需要选择其中一种方式实现即可;非重复验证尽量使用框架非重复的子类进行验证,不要在实体规则中进行验证,原因是写的逻辑比较多
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度宅基地房屋赠与受赠方后续使用协议
- 2025年度海景房房屋买卖协议书
- 二零二五年度学校食堂炊事员岗位聘用及食品安全责任保险服务合同
- 2025年度能源行业人员派遣劳务合同
- 二零二五年度文化活动免责的举办协议
- 二零二五年度餐厅租赁服务及品牌合作协议
- 二零二五年度企业资产质押贷款合同
- 临时工用工合同-2025年度制造业合作协议
- 2025年度旅游意外伤害保险责任免除合同
- 二零二五年度劳动合同解除协议书-员工合同续签协商解除
- 中国文化概况chapter-1
- 大学生职业素养训练(第六版)课件全套 宋贤钧 第1-14单元 选择职业目标- 坚守安全底线
- 期中测试卷(1~4单元)(试题)2024-2025学年四年级上册数学北师大版
- 2024年铁路安检员理论题库多选题
- 2024-2025学年初中劳动七年级下册人教版教学设计合集
- 煤矿煤炭销售管理制度
- 《语文综合实践:重温革命历史 赓续红色血脉》教案- 2023-2024学年高教版(2023)中职语文基础模块下册
- 2024年公开招聘事业单位工作人员报名登记表
- 植树节英文主题课件
- 微观经济学:绪论
- 2024年全国高考数学试题及解析答案(新课标Ⅱ卷)
评论
0/150
提交评论