商信互联
标准上下文:
行动
XAF允许将动作用作上下文。在这种情况下,执行指定的操作时会检查规则。要将上下文标识符与特定的动作相关联,请将其设置为应用程序模型的ActionDesign | ValidationContexts属性。动作| <Action>节点。您可以通过列出它们来关联任意数量的上下文标识符,并用分号分隔。
保存
如果为规则指定DefaultContexts.Save Context,则每次将所需对象(或其属性)保存到数据库时都会检查该规则。另外,默认情况下为此上下文启用就地验证(请参见IModelValidationContext.AllowInplaceValidation)。要在模型编辑器中指定保存上下文,请将IRuleBaseProperties.TargetContextIDs属性设置为Save。
删除
使用DefaultContexts.Delete上下文,删除所需对象时会检查规则。要在模型编辑器中指定Delete Context,请将IRuleBaseProperties.TargetContextIDs属性设置为Delete。
自定义上下文:
为规则指定上下文时,可以指定其他上下文条件。在这种情况下,仅当已验证对象(或属性)的属性值满足指定条件时,才会检查“规则”。例如,如果Sex属性设置为Sex.Female,则可以检查RuleRequiredField规则的Birthday属性。若要了解如何设置此条件,请参阅所需的“验证规则”属性的TargetCriteria属性描述。
由于验证系统旨在控制用户输入,因此该系统仅对分配给它们的视图和对象空间自动起作用。因此,如果您手动实例化了BaseObjectSpace并通过此Object Space执行对象修改,则修改不会得到验证。但是,如果需要验证此类修改,可以通过调用分配给静态Validator.RuleSet属性的RuleSet对象的RuleSet.Validate方法来完成。有关详细说明,请参阅“实现自定义上下文”主题。
验证模块提供ShowAllContexts操作(它在UI中具有“验证”标题)。此操作针对可编辑的详细视图被激活,并允许最终用户在编辑数据时检查预定义的规则。执行ShowAllContexts操作时,将在所有关联的上下文中检查为当前对象指定的所有验证规则。验证结果由XAF中的ContextValidationResult类表示。如果检测到任何无效的验证规则,则将调用一个包含ContextValidationResult列表视图的弹出窗口。此列表视图中详细列出了所有不适用的规则。要查看有关验证结果的更多详细信息,请双击一个网格项目。该ContextValidationResult 详细视图将被调用。
该ContextValidationResult详细视图显示DisplayableValidationResultItems集合。可以通过DisplayableValidationResultItem详细信息视图显示每个无效的验证规则,以提供有关验证结果的更多详细信息。可以通过双击收集项来调用此详细信息视图。
请注意,规则可能具有以下状态之一:
该规则已检查。当前对象已满足该规则。
该规则已检查。当前对象不满足该规则。
该规则尚未检查。可能的原因可能是未指定validated属性(请参阅RuleBaseAttribute.SkipNullOrEmptyValues),或者验证对象不满足指定的TargetCriteria(请参阅RuleBaseAttribute.TargetCriteria)。