Обеспечение локализованных сообщений об ошибках для неприписанной проверки допустимости модели в ASP.Net MVC 2?

Я использую атрибуты DataAnnotations наряду с ASP.Net MVC 2 для обеспечения проверки допустимости модели для моего ViewModels:

public class ExamplePersonViewModel {
    [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
    [StringLength(128, ErrorMessageResourceName = "StringLength", ErrorMessageResourceType = typeof(Resources.Validation))]
    [DataType(DataType.Text)]
    public string Name { get; set; }

    [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
    [DataType(DataType.Text)]
    public int Age { get; set; }
}

Это, кажется, работает как ожидалось (хотя это является очень подробным). Проблема, которую я имею, состоит в том, что существуют закулисные проверки допустимости модели, выполняемые, которые не связываются ни с каким определенным атрибутом. Пример этого в вышеупомянутой модели то, что Age свойство должно быть int. При попытке ввести значение нецелого числа в форму, то это будет ошибка со следующим (нелокализованным) сообщением:

Поле Age должно быть числом.

Как они могут не приписать сообщения проверки быть локализованными?

Существует ли полный список этих сообщений, доступных, таким образом, я могу удостовериться, что они все локализуются?

19
задан Lance McNearney 19 March 2010 в 21:01
поделиться

1 ответ

Перейдите на http://forums.asp.net/p/1512140/3608427.aspx , посмотрите сообщение Брэдвилса от 01 -09-2010, 18:20.

Решение мне подходит.

Должно быть интересно узнать полный список переопределяемых сообщений ...

UPDATE

Здесь содержание сообщения:

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

Есть две строки, которые вы можете переопределить в MVC 2:

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

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

18
ответ дан 30 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: