Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带条件参数值的ValidationAttribute_Validation_C# 4.0_Attributes - Fatal编程技术网

带条件参数值的ValidationAttribute

带条件参数值的ValidationAttribute,validation,c#-4.0,attributes,Validation,C# 4.0,Attributes,我是验证属性的新手。我想开发一个ValidationAttribute子类(MustExistAttribute),根据运行时的情况,它以两种方式之一工作。例如,我有一个名为RECORD的类,它有一个名为KEY的属性,我希望验证测试类似于“在数据库中查找这个KEY,看看它是否存在” 然而,光靠这一点是不够的。我还需要测试另一个属性(RECORD.IsNew)。然后,如果这也是真的,那么这个键存在的事实就是一个错误,但是如果RECORD.IsNew为假,那么验证应该通过。换句话说,属性的IsVal

我是验证属性的新手。我想开发一个ValidationAttribute子类(MustExistAttribute),根据运行时的情况,它以两种方式之一工作。例如,我有一个名为RECORD的类,它有一个名为KEY的属性,我希望验证测试类似于“在数据库中查找这个KEY,看看它是否存在”

然而,光靠这一点是不够的。我还需要测试另一个属性(RECORD.IsNew)。然后,如果这也是真的,那么这个键存在的事实就是一个错误,但是如果RECORD.IsNew为假,那么验证应该通过。换句话说,属性的IsValid覆盖不仅需要访问框架自动提供的值(KEY),还需要访问RECORD(或RECORD.IsNew)


有可能吗?

我想我的问题的答案是“没有”。但是有一个解决办法

在应用验证的地方,也就是说,我通常会

if(ModelState.IsValid)

,我可以添加我想要的任何测试,然后使用

ModelState.addmodeleror(“KEY”,“数据库已经有了新KEY的记录”)

AddModelError会将IsValid设置为false,因此我可以重新测试并从那里开始。框架将我的新错误与所有其他错误一样处理,并将其与KEY属性关联