.NET核心自定义数据注释验证带有错误代码

发布于 2025-02-10 00:24:44 字数 315 浏览 1 评论 0原文

对于.NET Core中的自定义验证,我正在使用system.com.ponentmodel.dataannotations.dataannotations.validationatatattribute注释,我正在覆盖iSvalid方法,如图所示在这里

现在,我想为每个错误消息添加错误代码,以便每个错误消息也将具有关联的错误代码。

如何实现?

For custom validations in .NET Core I am using the System.ComponentModel.DataAnnotations.ValidationAttribute annotation, and I'm overriding the IsValid method as shown here.

Now I want to add error codes for each error message, so that each error message will have an associated error code as well.

How this can be achieved?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伴随着你 2025-02-17 00:24:44

我在下面尝试过,这是您想要的吗?:

自定义valiateattribute:

public class StringLengthRangeAttribute : ValidationAttribute
    {
        public int Minimum { get; set; }
        public int Maximum { get; set; }

         public Dictionary<int, string> ErrorMessageDic { get; set; } = new Dictionary<int, string>();
        public StringLengthRangeAttribute()
        {
            this.Minimum = 5;
            this.Maximum = 10;
            ErrorMessageDic.Add(0, "SomeError");
            ErrorMessageDic.Add(1, "Minlength=5");
            ErrorMessageDic.Add(2, "Maxlength=10");
        }
        
        protected override ValidationResult? IsValid(
        object? value, ValidationContext validationContext)
        {
            string strValue = value as string;

            if (strValue.Length < this.Minimum)
            {
                return new ValidationResult(GetErrorMessage(1));
            }
            else if (strValue.Length > this.Maximum)
            {
                return new ValidationResult(GetErrorMessage(2));
            }
            return ValidationResult.Success;
        }
        public string GetErrorMessage(int key)
        {
            if (ErrorMessageDic.ContainsKey(key))
            {
                return string.Format("errorcode:[{0}],errormessage:[{1}]", key, ErrorMessageDic[key]);
            }
            return ErrorMessageDic[0];
        }

    }

model:

 public class TargetModel
    {
        [StringLengthRange]
        public string TestStr1 { get; set; }
        [StringLengthRange]
        public string TestStr2 { get; set; }
    }

testResult:

I tried as below,Is it what you want?:

the custom validateAttribute:

public class StringLengthRangeAttribute : ValidationAttribute
    {
        public int Minimum { get; set; }
        public int Maximum { get; set; }

         public Dictionary<int, string> ErrorMessageDic { get; set; } = new Dictionary<int, string>();
        public StringLengthRangeAttribute()
        {
            this.Minimum = 5;
            this.Maximum = 10;
            ErrorMessageDic.Add(0, "SomeError");
            ErrorMessageDic.Add(1, "Minlength=5");
            ErrorMessageDic.Add(2, "Maxlength=10");
        }
        
        protected override ValidationResult? IsValid(
        object? value, ValidationContext validationContext)
        {
            string strValue = value as string;

            if (strValue.Length < this.Minimum)
            {
                return new ValidationResult(GetErrorMessage(1));
            }
            else if (strValue.Length > this.Maximum)
            {
                return new ValidationResult(GetErrorMessage(2));
            }
            return ValidationResult.Success;
        }
        public string GetErrorMessage(int key)
        {
            if (ErrorMessageDic.ContainsKey(key))
            {
                return string.Format("errorcode:[{0}],errormessage:[{1}]", key, ErrorMessageDic[key]);
            }
            return ErrorMessageDic[0];
        }

    }

Model:

 public class TargetModel
    {
        [StringLengthRange]
        public string TestStr1 { get; set; }
        [StringLengthRange]
        public string TestStr2 { get; set; }
    }

The testResult:
enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文