2013-10-14 3 views
4

У меня есть форма, и когда он делает ненавязчивый validtaion Я хочу, чтобы показать:Как настроить ненавязчивые сообщения JQuery проверки в ASP.NET MVC?

Это сообщение: «Пожалуйста, введите значение»

Вместо этого сообщения: «Это поле обязательный."

Я попытался добавить это в конце моего jquery.validate.unobtrusive.js файла

(function ($) { 
    $.extend($.validator.messages, { 
    required: "Please enter a value." 
    }); 
}(jQuery)); 

Но это просто не работает.

Я также пытаюсь изменить непосредственно переменную «messages» в файле jquery.validate.js, но она также не работает.

Не могли бы вы рассказать мне, как я могу это сделать?

+0

Если после изменения сообщений непосредственно в вашем jquery.validate.js ничего не изменилось, это может означать, что кеш веб-браузера должен быть сброшен. Или если вызванный локализацией сценарий (например, message_xx.js?) Вызывается после jquery.validate.unobtrusive.js или jquery.validate.js: он может скрывать/отменять ваши пользовательские изменения. – AirL

+0

@AirL Я сбрасываю свой веб-браузер, перестраиваю проект, и он продолжает делать то же самое. У меня нет локализованного сценария. И когда я просматриваю консоль разработчика Chrome, я вижу, что у меня есть мои модификации. -> Мне приходилось думать, что MVC просто не использует это сообщение, он загружает его из другого места. Но я не знаю, где. – Laggel

+0

см. Источник просмотра, все сообщения на отметке, поэтому во время инициализации, например displayFor или метод EditorFor внутри htmlAttributes, укажите значения атрибутов данных в соответствии с вашим сообщением. –

ответ

11

Если вы используете атрибуты аннотации данных и не хотите настраивать сообщение для каждого из них (что, по одному из ваших комментариев, это так), я вижу два варианта:

1) Создайте свой собственный атрибут аннотации данных и установите сообщение по умолчанию и измените все экземпляры [Required] на новый атрибут.

2) Вы можете попробовать его в JQuery:

// reset the form's validator 
$("form").removeData("validator"); 

// change the text on each required attribute 
$(":input[data-val-required]").attr("data-val-required", "Please enter a value"); 

// reapply the form's validator 
$.validator.unobtrusive.parse(document); 

Я попробовал этот JavaScript в консоли Chrome и все, казалось, работало нормально. Причина, почему вам нужно сделать это, состоит в том, что 1) правила проверки кэшируются браузером, поэтому вам необходимо их очистить (см. this answer). И 2) все сообщения об ошибках находятся в разметке html после рендеринга страницы, поэтому это, где вам нужно изменить сообщения проверки.

6

Почему бы вам не использовать ErrorMeesage на ATTRS проверочных

[Required(ErrorMessage="Please enter a value.")] 

Edit: От ThisPost, это другой подход:

  • Создать папку App_GlobalResources для вашего проекта (правой кнопкой мыши на project - > Добавить - > Добавить папку ASP.NET - > App_GlobalResources).
  • Добавьте файл resx в эту папку. Скажем MyNewResource.resx.
  • Добавить ключ ресурса PropertyValueInvalid с желаемым форматом сообщения (например, «content {0} недействителен для поля {1}»). Если вы хотите изменить PropertyValueRequired, добавьте его также.
  • Добавьте код DefaultModelBinder.ResourceClassKey = "MyNewResource" к вашему стартовому коду Global.asax.
+0

Потому что, если использовать «ErrorMessage», мне нужно будет сделать это в каждом которое я требую. Вместо этого, если бы я мог изменить сообщение, мне просто нужно сделать это в одном месте. – Laggel

Смежные вопросы