ASP .NET之外的数据注释

时间:2013-05-31 04:29:44

标签: c# .net data-annotations

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

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

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

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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);
    }
}