如何添加不使用属性的服务器端验证规则?

时间:2019-03-06 22:42:14

标签: c# asp.net-core asp.net-core-2.2

添加validation很容易,例如RequiredAttribute作为属性开发时间:

[Required, StringLength(100)]
public string Title {get; set;}

但是,如果我的模型是一个实体(EF Core模型的一部分,使用流畅的EF Core API进行了描述),并且我想在运行时从EF Core模型中提取验证信息(顺序,字符串长度,自定义注释)?如何为Title字段添加验证规则(并且不使用属性修饰实体,这意味着避免验证信息重复)?

我可以尝试使用反射将属性添加到每个实例,这可能有效,但是我只是在搜索替代验证API。真的不存在吗?

我当然可以通过标准验证,创建自己的验证功能并将错误加载到ModelState中,但是然后我松开了jquery-validation-unobtrusive客户端验证配置。

1 个答案:

答案 0 :(得分:1)

  

如何为“标题”字段添加验证规则(并且不要用属性来修饰实体,这意味着避免验证信息重复)?

实施IClientModelValidator interface。然后对要构建jQuery验证的任何模型使用反射。

没有任何自动,企业,n层框架可以立即实现您想要的功能。

  

我只是希望应该有替代的验证配置API。

我相信都使用Validator Class。默认情况下,它可以针对IValidatableObject interface(基于非属性的验证)进行验证。

Stack Overflow - How do I use the IValidatableObect