你可以走几条路来达到这个目的。首先,您可以(ab)为此使用规则集。您可以创建一个“基本”规则集,其中包含适用于所有人的规则,您可以为系统中的每个角色创建一个规则集,甚至可以为每个用户创建一个规则集,但这当然很麻烦。
另一种选择是创建
IConfigurationSource
能够返回
ValidationSettings
实例,基于登录的用户。现在有几种方法可以构建
验证设置
对象。以下是几个例子:
-
可以使用从磁盘加载多个配置文件
FileConfigurationSource
return (new FileConfigurationSource('validation_' + role + '.config')).GetSection(sectionName);
-
你可以建立
验证设置
实例动态(并缓存它们)。您可以将此定义存储在数据库中并加载它们(这将是一项大量的工作)或在代码中定义它们(可能由程序集分隔)。
Here is an example
基于代码的配置。
-
将多个配置合并在一起。例如,可以将基线验证与特定于角色的验证合并。这样您就不必根据基线进行手动验证,也不必为特定于角色的验证进行第二次验证。虽然这是不支持的开箱即用,我写了关于如何做到这一点在我的博客
here
.
-
可以基于类型继承合并规则。虽然VAB只支持基于属性的即时验证的验证器继承,但我已经在我的博客上写过了,
here
我希望这有帮助。