带条件参数值的ValidationAttribute
我是验证属性的新手。我想开发一个ValidationAttribute子类(MustExistAttribute),根据运行时的情况,它以两种方式之一工作。例如,我有一个名为RECORD的类,它有一个名为KEY的属性,我希望验证测试类似于“在数据库中查找这个KEY,看看它是否存在” 然而,光靠这一点是不够的。我还需要测试另一个属性(RECORD.IsNew)。然后,如果这也是真的,那么这个键存在的事实就是一个错误,但是如果RECORD.IsNew为假,那么验证应该通过。换句话说,属性的IsValid覆盖不仅需要访问框架自动提供的值(KEY),还需要访问RECORD(或RECORD.IsNew)带条件参数值的ValidationAttribute,validation,c#-4.0,attributes,Validation,C# 4.0,Attributes,我是验证属性的新手。我想开发一个ValidationAttribute子类(MustExistAttribute),根据运行时的情况,它以两种方式之一工作。例如,我有一个名为RECORD的类,它有一个名为KEY的属性,我希望验证测试类似于“在数据库中查找这个KEY,看看它是否存在” 然而,光靠这一点是不够的。我还需要测试另一个属性(RECORD.IsNew)。然后,如果这也是真的,那么这个键存在的事实就是一个错误,但是如果RECORD.IsNew为假,那么验证应该通过。换句话说,属性的IsVal
有可能吗?我想我的问题的答案是“没有”。但是有一个解决办法 在应用验证的地方,也就是说,我通常会
if(ModelState.IsValid)
,我可以添加我想要的任何测试,然后使用
ModelState.addmodeleror(“KEY”,“数据库已经有了新KEY的记录”)代码>
AddModelError会将IsValid设置为false,因此我可以重新测试并从那里开始。框架将我的新错误与所有其他错误一样处理,并将其与KEY属性关联