C# 将CustomValidationAttribute与实体框架一起使用
我想在我的一个实体上实现一些条件验证逻辑。基本上,我要做的是仅当实体中的另一个字段具有特定值时才验证一个字段(使用正则表达式) 我尝试在我的实体上添加一个C# 将CustomValidationAttribute与实体框架一起使用,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我想在我的一个实体上实现一些条件验证逻辑。基本上,我要做的是仅当实体中的另一个字段具有特定值时才验证一个字段(使用正则表达式) 我尝试在我的实体上添加一个CustomValidationAttribute,但它没有做任何事情 [MetadataType(typeof(TemplateActionMetadata))] [CustomValidation(typeof(TemplateAction), "validateActionValue")] public partial class
CustomValidationAttribute
,但它没有做任何事情
[MetadataType(typeof(TemplateActionMetadata))]
[CustomValidation(typeof(TemplateAction), "validateActionValue")]
public partial class TemplateAction
{
public static ValidationResult validateActionValue(string pValue, ValidationContext vContext)
{ //this never gets called
return ValidationResult.Success;
}
}
我还尝试在我的字段中添加属性
public partial class TemplateActionMetadata
{
[CustomValidation(typeof(TemplateAction), "validateActionValue")]
public string ActionValue { get; set; }
}
现在它确实调用了
validateActionValue
方法,但ValidationContext
参数始终为空,因此我无法获取实现验证逻辑所需的其他字段的值。在msdn文档中,我可以看到CustomValidationAttribute类有一个只读的RequiresValidationContext属性
此属性将从基类ValidationAttribute重写
由于您没有上下文,我想这个属性会返回false
因此,无法使用此属性获取上下文。
您可能需要自己创建一个自定义属性来满足您的需要
我发现此Microsoft指南可以帮助您: