Я использую атрибуты 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 должно быть числом.
Как они могут не приписать сообщения проверки быть локализованными?
Существует ли полный список этих сообщений, доступных, таким образом, я могу удостовериться, что они все локализуются?
Перейдите на 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 в вашем списке поставщиков валидатора (что по умолчанию), то вы никогда не увидите это второе сообщение.Этот провайдер видит необязательные поля и добавляет к ним подразумеваемый атрибут [Обязательный], чтобы их сообщения согласовывались с другими полями с явными [Обязательными] атрибутами и чтобы гарантировать, что вы получите проверку на стороне клиента для обязательных полей.