2015-01-27 1 views
0

Я использовал двигатель JQuery Validation здесь: https://github.com/posabsolute/jQuery-Validation-EngineJquery проверка двигателя - Как использовать идентификаторы управления вместо имен

Я использую его в пределах ASP.NET WebForms сайт (не MVC). У меня есть тег формы на главной странице и вызывается функция проверки.

$(function() { 
       $("#form1").validationEngine('attach', { promptPosition: "topRight" }); 
      }); 

Если элементы управления находятся на MasterPage, валидаторы работают хорошо, но если они привезены из страницы содержимого, они не проверяются.

Я оглянулся и увидел, что это потому, что .net переименовывает управления, чтобы избежать конфликтов: https://stackoverflow.com/a/7353664/1218621

Так что я положил ClientIDMode = «Static» в моей директиве Masterpage, но сохраняет только идентификаторы управления формой, а не имена. И этот механизм проверки jquery вызывает элементы по их именам.

Я знаю, что я мог написать сценарий для переименования элементов управления, но я прочитал, что после этого я не смогу ссылаться на свои свойства после обратной передачи, и кажется, что это было бы не лучше практика.

Поскольку я могу гарантировать, что идентификаторы управления будут использоваться с помощью ClientIDMode = "Static", но я не могу рассчитывать на то, что их значение имени не изменяется, есть ли способ просто сделать работу проверки правильности jquery на идентификаторах управления имен?

ответ

0

Вы должны поставить ClientIDMode="Static" на элементы управления на своих страницах контента. Это довольно приятная клиентская библиотека; что вы используете для проверки на стороне сервера? Вы пробовали использовать методы проверки ajax[selector] или funccall[selector]?

+0

Благодарим за предложение. Я написал свою собственную проверку на стороне сервера для ее резервного копирования, но еще не пробовал использовать метод ajax или funccall. Я также добавляю ClientIDMode = "Static" на элементы управления, но он все еще не работает. View Source показывает, что имя по-прежнему изменяется в дополнение к тому, которое я уже установил: Cineno28

+0

ClientIDMode =" Static "устанавливает только атрибут * ID *; именованные контейнеры по-прежнему будут использовать атрибут * name *. AFAIK нет никакого способа обойти это. Вам нужно использовать 'name =" txtFirstName "' Может ли он не выбирать через ID? – sh1rts