Как получить jQuery.validate() для работы в ASP.NET с мастер-страницами?

Моя форма содержит главную страницу и вспомогательные страницы.

Как проверить форму внутри вспомогательных страниц? Когда я пытаюсь с главной страницей, проверка не выполняется. Однако все работает, когда я не использую главную страницу.

Пожалуйста, объясните, как получить jQuery Validate для работы в ASP.NET с главной страницей.

Ответ 1

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

Чтобы использовать проверку jQuery в среде главной страницы ASP.Net, вы должны помнить, что заполнители меняют все, включая имя. Поскольку .validate() так сильно зависит от имен каждого поля, вы должны получить имена клиентских сторон для каждого поля. Поскольку это может измениться в зависимости от ваших заполнителей (мой конец выглядит как name="ctl00$ContentPlaceHolder1$FirstName"), ваш код должен выглядеть примерно так:

$(document).ready(function () {
        $('form').validate({
            rules: {
                <%= FirstName.Name %>: {
                    required: true,
                    minlength: 2,
                    maxlength: 25
                },
                <%= LastName.Name %>: {
                    required: true
                },
                <%= Email1.Name %>: {
                    required: true,
                    email: true
                },
                <%= Email2.Name %>: {
                    required: true,
                    email: true,
                    equalTo: "#<%= Email1.ClientID %>"
                },
                <%= Password1.Name %>: {
                    required: true,
                    minlength: 7
                },
                <%= Password2.Name %>: {
                    required: true,
                    minlength: 7,
                    equalTo: "#<%= Password1.ClientID %>"
                }
            },
            messages:{
                <%= FirstName.Name %>: {
                    required: "Please enter your first name.",
                    minlength: $.validator.format("Your first name must be at least {0} characters.")
                },
                <%= LastName.Name %>: {
                    required: "Please enter your last name.",
                    minlength: $.validator.format("Your last name must be at least {0} characters.")
                },
                <%= Email1.Name %>: {
                    required: "Please enter your email address.",
                    email: "Please enter a valid email address."
                },
                <%= Email2.Name %>: {
                    required: "Please confirm your email address.",
                    email: "Please confirm with a valid email address.",
                    equalTo: "Email entries do not match."
                },
                <%= Password1.Name %>: {
                    required: "Please enter a password",
                    minlength: $.validator.format("Your password must be at least {0} characters.")
                },
                <%= Password2.Name %>: {
                    required: "Please confirm your password.",
                    equalTo: "Passwords do not match."
                }
            },
            errorClass: "error-label",
            wrapper: "li",
            errorLabelContainer: "#ErrorSection"
        });
    });

Этот код берется непосредственно с рабочей веб-страницы шахты, используя jQuery Validation версия 1.12.0 и jQuery версия 1.11.0.

Изменить: я должен добавить, что все входы, которые я проверяю, также runat="server" для взаимодействия на стороне сервера.