RegEx验证的DataAnnotations本地化消息问题

时间:2011-02-01 18:42:18

标签: asp.net-mvc localization data-annotations

我的正则表达式的验证消息有问题。除了下面的一个字段外,本地化消息随处可见:

    [LocalizedDisplayName("LblWordCount", NameResourceType = typeof(ValidationMessages.Messages))]
    [Required(ErrorMessageResourceName = "ErrorFieldRequired", ErrorMessageResourceType = typeof(ValidationMessages.Messages))]
    [RegularExpression(@"^[0-9]+$", ErrorMessage = "", ErrorMessageResourceName = "ErrorDigitsOnly", ErrorMessageResourceType = typeof(ValidationMessages.Messages))]
    public Int32 WordCount { get; set; }

我在resx文件中放入“ErrorDigitsOnly”并不重要 - 默认消息总是踢出:“值'zxzza1'对字数无效。”例如 - [Required]的消息正确显示。

对此有何建议?

干杯, 303

我已经检查了拼写错误的代码,但找不到任何错误。

1 个答案:

答案 0 :(得分:3)

我实际上遇到了类似的情况。 您是否尝试在另一个类中设置wordcount验证,而不是在DataAnnotation属性中使用正则表达式模式?

例如 -

  public class EmailAttribute: RegularExpressionAttribute
{
    public EmailAttribute() : base(@"[^@\.]+(\.[^@\.]+)*@[^@\.]+(\.[^@\.]+)?(\.[^@\.]{2,})")
    {
    }

    public override string FormatErrorMessage(string name)
    {
        return Resources.Resources.emailValidation;
    }
}

然后您可以使用这样的属性 -

    [CustomRequired]
    [Email]
    public string Email { get; set; }

以这种方式使用它的好处意味着您可以在资源上获得强大的输入,并且还允许您编写更整洁的验证类。

希望它有所帮助!

相关问题