如何使用IValidatableObject?我明白IValidatableObject用于验证对象的方式,让我们彼此比较属性。我仍然希望有一些属性来验证单个属性,但是在某些情况下,我想忽略某些属性上的失败。我是否试图在下面的情况下不正确地使用它?如果不是,我如何实现这一点?public class ValidateMe : IValidatableObject{
[Required]
public bool Enable { get; set; }
[Range(1, 5)]
public int Prop1 { get; set; }
[Range(1, 5)]
public int Prop2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!this.Enable)
{
/* Return valid result here.
* I don't care if Prop1 and Prop2 are out of range
* if the whole object is not "enabled"
*/
}
else
{
/* Check if Prop1 and Prop2 meet their range requirements here
* and return accordingly.
*/
}
}}
3 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
在验证对象时,在Validator.ValidateObject中应用以下进程:
- 验证属性级属性
如果任何验证器无效,则中止返回失败的验证。
- 验证对象级别的属性。
如果任何验证器无效,则中止返回失败的验证。
- 如果桌面框架上的对象实现了IValidatableObject,那么调用它的验证方法并返回任何失败
这表明,您要做的工作不会成功,因为验证将在步骤2处中止。您可以尝试创建从内置属性继承的属性,并在执行正常验证之前(通过接口)专门检查是否存在启用的属性。或者,您可以将用于验证实体的所有逻辑放在Validate
方法。
- 3 回答
- 0 关注
- 830 浏览
添加回答
举报
0/150
提交
取消