2013-08-22 4 views
0

У меня есть это сообщение проверки для поля в представлении MVC за пределами формы начала. Однако это не отображает это.ValidationMessageДля отображения вне формы

@Html.ValidationMessageFor(m => m.OldPassword) 

Есть ли какой-либо возможный способ добиться этого? Поскольку я не хочу использовать функцию JQuery или Javascript только для проверки этого.

+0

Можете ли вы опубликовать свой код просмотра. Также почему вы хотите, чтобы он находился вне элемента формы. – ckv

+0

Привет, я хочу, потому что в представлении есть несколько форм. Следовательно, все ошибки должны быть показаны выше. – TBA

+0

Это несколько форм, передаются ли данные «Ajax.BeginForm»? –

ответ

1

ValidationMessageFor работает только в том случае, если поля/элементы управления находятся в форме post action для этого контроллера. В противном случае вам нужно сделать отдельные методы, например JavaScript/Ajax/ViewBag, чтобы получить ошибку.

1
  1. Сохраните сообщение проверки в форме с тегом Div.
  2. Не показывать Div.
  3. Нажав кнопку, проверьте свойство IsValid формы
  4. Если в действительном, скопируйте HTML() Div и поместите его в другой div, который будет вне формы.

Это не чистое решение, но фокус будет работать

+0

благодарит Партхо за помощь. Позволь мне проверить. – TBA

0

Он работает только тогда, когда @Html.ValidationMessageFor(m => m.Property) находится внутри формы. Тем не менее, мне удалось найти обходной путь, который также обновляет внешний DIV, когда есть изменения элементов, то есть, когда сообщения об ошибках изменить без повторной отправки формы:

  1. Поместите <div id="outside-form"></div> вне формы.
  2. Вставьте форму <div id="inside-form" style="display:none;"></div> в вашу форму, содержащую все заявления @Html.ValidationMessageFor(m => m.Property).
  3. Это неприятная часть, в вашем jquery.validate.js, найти следующее:

form: function() {.....} и как раз перед функцией возврата добавить $("#outside-form").html($("#inside-form").html());. Это гарантирует, что ваш внешний-div будет обновляться каждый раз, когда вся форма проверяется.

element: function(element) {.....} и непосредственно перед возвратом функции добавить $("#outside-form").html($("#inside-form").html());. Это гарантирует, что ваш внешний-div будет обновляться каждый раз, когда каждый элемент формы проверяется.

Вот и все! Мне было интересно, есть ли способ расширить объекты form и element без изменения самого файла .js. У вас есть какие-либо сведения об этом?

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