使用自定义验证属性时获取错误消息[英] Get error message when using custom validation attribute

本文是小编为大家收集整理的关于使用自定义验证属性时获取错误消息的处理方法,想解了使用自定义验证属性时获取错误消息的问题怎么解决?使用自定义验证属性时获取错误消息问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在使用像这样的customValidationAttribute

[CustomValidation(typeof(MyValidator),"Validate",ErrorMessage = "Foo")]

我的验证器包含此代码

public class MyValidator {
    public static ValidationResult Validate(TestProperty testProperty, ValidationContext validationContext) {
        if (string.IsNullOrEmpty(testProperty.Name)) {
            return new ValidationResult(""); <-- how can I get the error message  from the custom validation attribute? 
        }
        return ValidationResult.Success;
    }
}

那么如何从自定义验证属性获取错误消息?

推荐答案

没有可靠的方法可以从属性获取错误消息.另外,您可以编写自定义验证属性:

[MyValidator(ErrorMessage = "Foo")]
public TestProperty SomeProperty { get; set; }

这样:

public class MyValidatorAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var testProperty = (TestProperty)value;
        if (testProperty == null || string.IsNullOrEmpty(testProperty.Name))
        {
            return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
        }

        return null;
    }
}

在这种情况下,将从自定义验证属性推断出错误消息.

其他推荐答案

我知道这是一个旧帖子,但我将为这个问题提供更好的答案.

Asker想要使用CustomValidationAttribute并使用ErrorMessage属性传递错误消息.

如果您想使用静态方法来使用装饰属性时提供的错误消息,则返回:

new ValidationResult(string.Empty)或ValidationResult("")或ValidationResult(null).

CustomValidationAttribute覆盖其基类的FormatErrorMessage,并进行有条件检查string.IsNullOrEmpty.

其他推荐答案

您可以研究以下帖子,以获取有关如何做您想做的事情的一些想法(他们使用JS):

通过javascript? p>

希望这会有所帮助.

本文地址:https://www.itbaoku.cn/post/1793769.html