Вопрос по localization, validation, numbers, data-annotations, asp.net-mvc – Поле должно быть числом. Как изменить это сообщение на другой язык?

32

Как я могу изменить эти сообщения для всехint поля, чтобы вместо того, чтобы сказать:

The field must be a number на английском это показывает:

El campo tiene que ser numerico на испанском.

Есть ли способ?

когда вы хотите показать это сообщение? M.Azad
в действительно изменить английское сообщение для испанского сообщения будет целью Diego_DX
извините, я хочу показать это сообщение, когда в текстовом поле есть model.int, кто-то напишет на нем строку, jquery.validate и jquery.validate.unobtrusive покажут это сообщение на английском языке (мне нужно, чтобы это сообщение было на испанском языке для всех моих инт. поле) Diego_DX

Ваш Ответ

3   ответа
6

 [RegularExpression("\d{9}",ErrorMessage="El campo tiene que ser numerico")]
 public decimal UnitPrice { get; set; } 
Да. Я думаю, что вы делаете это ... или создаете общедоступную маску для вашего элемента управления, которая привязывается к свойству числового типа. Или определите свое свойство в базовом классе, если оно является общим свойством.
да, я знаю, что так, но нет способа, которым я мог бы установить это для всех моих int, гарантированных сделать поле для поля? Diego_DX
62

Локализация сообщений об ошибках по умолчанию в ASP.NET MVC и WebForms

В основном вы должны добавить следующий кусок кода в вашApplication_Start() метод вGlobal.asax:

 ClientDataTypeModelValidatorProvider.ResourceClassKey = "Messages";
 DefaultModelBinder.ResourceClassKey = "Messages";

Щелкните правой кнопкой мыши свой проект ASP.NET MVC в обозревателе решений в Visual Studio и выберитеAdd => Add ASP.NET Folder => App_GlobalResources.

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

Наконец добавьте следующие строковые ресурсы в этом.resx файл:

Name                   Value
====                   =====
FieldMustBeDate        The field {0} must be a date.
FieldMustBeNumeric     The field {0} must be a number.
PropertyValueInvalid   The value '{0}' is not valid for {1}.
PropertyValueRequired  A value is required.

Тебе должно быть хорошо идти.

Обратите внимание, что интересующее вас значение - этоFieldMustBeNumeric, Чтобы локализовать этоSpanish, вы должны добавить еще один файл ресурсов с именемMessages.es.resx, В этом конкретном.resx файл замените значение ресурса на:

Name                Value
====                =====
FieldMustBeNumeric  El campo {0} tiene que ser numerico.

Если вы используете ASP.NET MVC 3 и ниже, это решение может помочь вам достичь того же результата:https://stackoverflow.com/a/2551481/114029

После долгих поисков этот ответ мне помог. Я был сбит с толку между проверкой Javascript иunobstrusive проверка, которая используетdata-val-number Атрибут HTML5. Спасибо.
Поле не переведено (по файлам ресурсов или чем-либо еще), но его можно легко изменить, добавив [Display (Name = & quot; YourText & quot;)].
@ivowiblo: действительно ... В чем проблема? Может быть, я могу помочь вам.
это не работает для MVC3
Но ... Могу ли я использовать другой файл ресурсов из другой библиотеки (из другой сборки)? Я не хочу создавать файл ресурса в проекте веб-сайта.
0

исла, удвойте и с плавающей точкой. Вы можете использовать Range Attribute со String, как показано ниже.

    [Required(ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "YearOfEstablishmentRequired")]
    [Range(0, int.MaxValue, ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "ValidYearOfEstablishment")]
    [Display(Name = "Year Of Establishment")]
    public string YearOfEstablishment { get; set; }

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

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