我试图查看是否有一种方法可以使用FluentValidation,而无需为我的应用程序中的每种对象类型显式创建验证模型。
在技术上和目前可行吗?
注意:这个问题可能最终将我引向实现通用lambda表达式的技术性问题。
示例:
对于基本的,即需即用的验证规则,lambda表达式在p.Name上进行显式验证。但是,如果我的模型是通用类型T,那么如何为该验证器的属性(任何给定的属性字符串名称)进行验证?
RuleFor(p => p.Name )。NotEmpty()。WithMessage(“您必须输入名称”);
答案 0 :(得分:0)
我能够通过采取一种破解解决方案来解决。这是我所做的基本细节:
我创建了一个类(GenericModel),该类具有表示模型属性的对象的集合。
我创建了一个继承自AbstractValidator的验证器类。
基于GenericModel的“属性对象”集合以及有关每个属性的验证规则和错误消息的其他元数据,我能够在运行时添加FluentValues规则。
在EditForm上,我处理了OnSubmit事件。在该事件处理程序中,我通过FluentValidation的ValidateAsync()方法执行验证。
最后,我遍历验证结果,并使用适当的CSS,错误消息,突出显示...等更新每个字段。