1

我想RegularExpressionAttribute在某个对象的属性上使用,但该对象将在 ASP .NET 之外使用。我还想自定义与RegularExpressionAttribute. 例如,我希望错误消息是这样的:

您输入的“值”与所需的模式不匹配。

有没有办法指定错误消息的“值”部分?看起来我可以使用IValidatable界面,但也许有一种我错过的简单方法?

提前致谢!

4

2 回答 2

1

您可以添加对相同注释的引用System.ComponentModel.DataAnnotations并使用相同的注释。不过,不确定如何连接验证。

于 2013-05-31T04:43:09.750 回答
0

就在这里。

RegularExpressionAttribute 继承自 ValidationAttribute。这具有 ErrorMessage、ErrorMessageResourceName 和 ErrorMessageResourceType 等属性。

这些值可以直接应用于您应用它们的地方:

[RegularExpressionAttribute(Pattern="xxx", ErrorMessage = "My custom message.")]

当您希望将值混合为响应的一部分时,您可以通过从标准属性继承来创建自己的属性。这是一个示例:

public class MyStringLengthAttribute : StringLengthAttribute
{
    private string _value;  

    public override string FormatErrorMessage(string name)
    {   
        return string.Format("Value {0} is not valid.", value);
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        _value = value.ToString();
        return base.IsValid(value, validationContext);
    }
}
于 2013-05-31T04:43:15.830 回答