локализация сообщений клиента валидации mvc 3.0 - PullRequest
1 голос
/ 20 сентября 2011

Сначала извините за команду Microsoft MVC из-за отсутствия простого решения для локализации сообщений проверки аннотаций данных. Это отнимает у меня много времени и, в конце концов, простое решение не найдено!

Я наконец решил наследовать от RequiredAttribute, чтобы сделать локализацию. поэтому я сделал это:

public class MyRequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute
{
    public MyRequiredAttribute()
        : base()
    {
        this.ErrorMessageResourceType = typeof(Resources.DataAnnotationDefaults);
        this.ErrorMessageResourceName = "Required";
    }
}

где я предоставил свои локализованные сообщения в файле DataAnnotationDefaults.resx. Так что я могу использовать это просто

      [MyRequired]
    public int UnitCode { get; set; }

Но проблема в том, что он не применяется на стороне клиента и только на стороне сервера. Зачем? что я пропустил?

Удивительно, что следующая строка в порядке и работает и на стороне клиента!

[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(DataAnnotationDefaults))] 
 public int UnitCode { get; set; }

Я буду рад и признателен, если кто-то может мне помочь в этом.

1 Ответ

2 голосов
/ 20 сентября 2011

Вам необходимо понять, как работает валидация в MVC и .NET. DataAnnotation - это универсальная библиотека проверки, которая может использоваться во всех видах приложений, а не только в MVC.

Следовательно, MVC содержит различные типы адаптеров для MVC, которые используются для добавления поддержки DataAnnotations. Клиентские адаптеры специально созданы для атрибутов, определенных в System.ComponentModel.DataAnnotations.

Поэтому вам необходимо создать свои собственные адаптеры, чтобы он работал с вашими производными атрибутами. Я написал запись в блоге об этом.

Более простой подход - использовать моего поставщика локализованных метаданных .

...