CSLA验证规则总结
CSLA业务规则
验证规则所在空间: Csla.Rules
基类 BusinessBase 的属性 BusinessRules 中记录了业务类的验证规则
验证规格的写法
private class MyRule : Csla.Rules.BusinessRule
{
protected override void Execute(RuleContext context)
{
var target = (Customer)context.Target;
if (target.Sales < 10)
context.AddInformationResult("Customer has
low sales");
}
}
添加验证规则
protected override void AddBusinessRules()
{
base.AddBusinessRules();
BusinessRules.AddRule(new MyRule { PrimaryProperty = SalesProperty
});
}
多数规则都需要设置一个主要属性(PrimaryProperty),在构造函数中中为其赋值,比如下面的 Required,MaxLength 规则
protected override void
AddBusinessRules()
{
base.AddBusinessRules();
BusinessRules.AddRule(new
MyRule { PrimaryProperty = SalesProperty });
BusinessRules.AddRule(new
Csla.Rules.CommonRules.Required(NameProperty));
BusinessRules.AddRule(new
Csla.Rules.CommonRules.MaxLength(NameProperty, 20));
}
引发验证规则
BusinessRules.AddRule(new MyRule { PrimaryProperty =
SalesProperty });
在之前的AddRule() 调用中,PrimaryProperty 属性被设置为 SalesProperty,
把验证规格 和 特定的属性关联在一起,一旦属性(SalesProperty)变动,验证规则就会被自动触发。
如果没有提供 为验证规则提供PrimaryProperty,业务规则是和业务类进行关联的。
基类 BusinessBase 的属性 BusinessRules 中有三个方法来检查验证规格
1 、CheckRules()
– 检查对象中的所有验证规则。
2、CheckObjectRules() - 仅校验不和属性关联的验证规则。
3、CheckRules(property)
– 检查某个属性的所有规则。
框架中的实现
var rulesProperty
=
typeof(BusinessBase).GetProperty("BusinessRules",BindingFlags.DeclaredOnly
| BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic);
if (rulesProperty != null)
{
var rules = rulesProperty.GetValue(this.Basic, null) as
Csla.Rules.BusinessRules;
if (rules != null)
{
rules.CheckRules();
}
}
else
{
messageService.ShowError("rulesProperty == null");
}
提示实效规则列表
实效列表 BrokenRulesCollection
if (this.Basic.BrokenRulesCollection.Count > 0)
{
string temp = string.Empty;
foreach (var item in this.Basic.BrokenRulesCollection)
{
temp +=
item.Description + "\r\n";
}
messageService.ShowError(temp);
return result;
}
CSLA验证规则总结的更多相关文章
- Yii1.1的验证规则
在Yii1.1的数据验证是由CValidator完成,在CValidator中提供了各种基本的验证规则 <?php public static $builtInValidators=array( ...
- ThinkPhp5.0模型验证规则
Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...
- EF里如何定制实体的验证规则和实现IObjectWithState接口进行验证以及多个实体的同时验证
之前的Code First系列文章已经演示了如何使用Fluent API和Data Annotation的方式配置实体的属性,比如配置Destination类的Name属性长度不大于50等.本文介绍E ...
- TP5验证规则
系统内置的验证规则如下: 格式验证类 require 验证某个字段必须,例如:'name'=>'require' number 或者 integer 验证某个字段的值是否为数字(采用filter ...
- [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...
- Thinkphp 1.验证规则 2.静态定义 3.动态验证
一.验证规则 数据验证可以对表单中的字段进行非法的验证操作.一般提供了两种验证方式: 静态定 义($_validate 属性)和动态验证(validate()方法). //验证规则 array( ar ...
- oracle ebs应用产品安全性-交叉验证规则
转自: http://blog.itpub.net/298600/viewspace-625138/ 定义: Oracle键弹性域可以根据自定义键弹性域时所定义的规则,执行段值组合的自动交叉验证.使用 ...
- Struts2 验证框架 validation.xml 常用的验证规则
validation.xml 的命名规则和放置路径: 文件名:<ActionClassName>-validation.xml <ActionClassName>就是要验证的A ...
- 爱上MVC3~为下拉列表框添加一个自定义验证规则
回到目录 开发它的原因: 之前的同事,也是我的哥们,问我下拉列表框是否可以支持验证,这个问题看似简单,但确实MVC里有为我们提供,所以,只能自己写个扩展了,即自己写一个attribute特性,让它继承 ...
随机推荐
- django--mysql设置
mysql基本配置 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', 'PORT': 3306, 'USE ...
- Django - ModelForm组件
一.ModelForm组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样一张学生表, ...
- python数据类型二(列表和元组)
一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...
- jquery请求数据
$(document).ready(function() { $.ajax({ url: "http://123.207.88.84:8080/zdm/AppApi/Search/Categ ...
- HTTP协议简要介绍
1. 网络基础 TCP/IP 通常使用的网络是在TCP/IP协议簇基础上运作的. HTTP属于它内部的一个子集. TCP/IP分为4个层次, 应用层, 传输层, 网络层, 链路层. (Applicat ...
- 转:用unix socket加速php-fpm、mysql、redis的连接
图虫的服务器长期是单机运行.估计除了mysql之外,php-fpm和redis还可以在单机上共存很长时间.(多说服务器早就达成了单机每日2000万+动态请求,所以我对单机搞定图虫的大流量非常乐观) 如 ...
- 『NiFi 学习之路』入门 —— 下载、安装与简单使用
一.概述 "光说不练假把式." 官网上的介绍多少让人迷迷糊糊的,各种高大上的词语仿佛让 NiFi 离我们越来越远. 实践是最好的老师.那就让我们试用一下 NiFi 吧! 二.安装 ...
- HZNUOJ 2508:双峰插云
我们注意到总的颜色种类只有200,故我们可以先处理出所有云朵中每一种颜色有多少朵云朵拥有,此处我们约定用$cnt[] 表示$ 然后暴力枚举将哪朵云分给老薛,记录三个临时变量$Max_{kk}, Max ...
- myelcipse中SVN进行代码更新和提交
感谢博主(John的专栏)的奉献,http://blog.csdn.net/tangzenglei/article/details/50175639
- ajax 事件使用
error: function (XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLH ...