如何在.net core 2.1中获取自定义验证属性的参数值?

问题描述 投票:0回答:1

我如何访问 myargument 价值 argvalueValidateMain

型号

[ValidateMain]
public class MainClass
{
    [ValidateChild(myargument: "argvalue")]
    public string myproperty { get; set; }

    [ValidateChild(myargument: "argvalue2")]        
    public string myproperty2 { get; set; }

}

ValidationAttributes

public class ValidateChild : ValidationAttribute
{
    private readonly string myargument;

    public ValidateChild(string myargument)
    {
        this.myargument = myargument;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        // Here I know how to get myargument value. My problem is how to get it in ValidateMain
        return ValidationResult.Success;
    }
}

public class ValidateMain : ValidationAttribute
{
    public ValidateMain()
    {

    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        foreach (System.Reflection.PropertyInfo item in value.GetType().GetProperties())
        {
            // What I need here is to get 'myargument' value 'argvalue'
        }
        return ValidationResult.Success;
    }
}
c# asp.net-core asp.net-core-mvc asp.net-core-2.1
1个回答
0
投票

使用下面的语句来获取它的值。

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        foreach (System.Reflection.PropertyInfo item in value.GetType().GetProperties())
        {
            var x = item.CustomAttributes.FirstOrDefault().ConstructorArguments.FirstOrDefault();

        }
        return ValidationResult.Success;
    }

调试并快速观看 然后你就可以知道如何获得它了

© www.soinside.com 2019 - 2024. All rights reserved.