Я использовал двигатель 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 на идентификаторах управления имен?
Благодарим за предложение. Я написал свою собственную проверку на стороне сервера для ее резервного копирования, но еще не пробовал использовать метод ajax или funccall. Я также добавляю ClientIDMode = "Static" на элементы управления, но он все еще не работает. View Source показывает, что имя по-прежнему изменяется в дополнение к тому, которое я уже установил: – Cineno28
ClientIDMode =" Static "устанавливает только атрибут * ID *; именованные контейнеры по-прежнему будут использовать атрибут * name *. AFAIK нет никакого способа обойти это. Вам нужно использовать 'name =" txtFirstName "' Может ли он не выбирать через ID? – sh1rts