Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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
C# 将CustomValidationAttribute与实体框架一起使用_C#_Asp.net_Entity Framework - Fatal编程技术网

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指南可以帮助您: