Глобально локализовать валидацию - PullRequest
4 голосов
/ 22 марта 2011

Я использую атрибуты System.ComponeneModel.DataAnnotations, такие как Required и StringLength. Можно ли локализовать свои сообщения об ошибках глобально?

Я знаю, что могу это сделать

[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]

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

public class LocalizedRequiredAttribute : RequiredAttribute {
    public LocalizedRequiredAttribute()
        : base() {
        ErrorMessageResourceName = "Required";
        ErrorMessageResourceType = typeof(Resources.Validation);
    }
}

(но если нет другого пути, я соглашусь на это)

Ответы [ 2 ]

8 голосов
/ 22 марта 2011

AFAIK, вам нужен либо пользовательский атрибут, либо указать свойства ErrorMessageResourceName и ErrorMessageResourceType.Есть еще одна возможность подробно здесь :

Создать глобальный класс ресурсов в App_GlobalResources и установить DefaultModelBinder.ResourceClassKey на имя этого класса (например, если вы сделали «Сообщения».resx ", затем установите ResourceClassKey в" Messages ").

В MVC 2 можно переопределить две строки:

  • Строковое значение для" PropertyValueInvalid ":используется, когда введенные пользователем данные несовместимы с типом данных (например, ввод «abc» для целочисленного поля).Сообщение по умолчанию для этого: «Значение {0} недопустимо для {1}».

  • Строковое значение для «PropertyValueRequired» используется, когда пользователь не вводил никаких данных для поля, которое не может иметь значение NULL (например, целочисленное поле).Сообщение по умолчанию для этого: «Требуется значение».

Во втором случае важно отметить, что, если у вас есть DataAnnotationsModelValidatorProvider в списке поставщиков валидаторов (который по умолчанию), вы никогда не увидите это второе сообщение.Этот провайдер видит необязательные поля и добавляет к ним неявный атрибут [Обязательный], чтобы их сообщения были согласованы с другими полями с явными атрибутами [Обязательные] и чтобы вы получили подтверждение на стороне клиента для обязательных полей.

1 голос
/ 07 мая 2012

Для MVC3 см. DataAnnotationsResources. Это «RequiredAttribute_ValidationError» и многое другое. Вы можете решить эту проблему, установив языковой пакет (ы) .NET Framework.

Смотри также

...