Ошибка сообщения локализации DataAnnotations для проверки RegEx - PullRequest
2 голосов
/ 01 февраля 2011

У меня проблема с сообщением проверки для регулярного выражения. Локализованные сообщения появляются везде, кроме одного поля ниже:

    [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 недопустимо для Word Count» Например - сообщение для [Требуется] отображается правильно.

Какие-нибудь предложения для этого?

Ура, 303

Я проверил код на наличие орфографических ошибок, но не смог найти ни одной.

1 Ответ

3 голосов
/ 06 мая 2011

Я сам столкнулся с подобной ситуацией.Вы пытались установить проверку правильности подсчета слов в другом классе вместо использования шаблона регулярного выражения в атрибуте 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; }

Преимущества использования этого способа означают, что вы получаете строгую типизацию для своих ресурсов, а также позволяет писать более точные классы проверки.

Надеюсь, это поможет!

...