Сводное сообщение о проверке появляется дважды - PullRequest
0 голосов
/ 18 мая 2011

У меня есть элементы управления проверкой на моей странице, и я использую окно сводных сообщений проверки для отображения сообщений проверки, показанная ниже функция javascript сработала для меня, но проблема в том, что я использую эту функцию javascript для события OnClientClick кнопки и когда Я нажимаю кнопку с незаполненными элементами управления формы, в которой отображается окно с сообщением о проверке, как и ожидалось, но когда я закрываю окно с сводкой, оно снова отображается, и мне нужно закрыть окно сообщения, чтобы исчезнуть, что означает, что мне приходится делать два щелчка каждый раз. Может кто-нибудь исправить меня, что я делаю не так.

Вот что я делаю: -

 <asp:Button ID="SubmitButtonOne" runat="server" Text="Submit" OnClick="SubmitButtonOne_Click"
                         ValidationGroup="Cases" ClientIDMode="Static" OnClientClick="PleaseWaitShow()" />

Вот функция JavaScript:

function PleaseWaitShow() {
                var isPageValid = true;
                // Do nothing if client validation is not active
                if (typeof (Page_Validators) != "undefined") {
                    if (typeof (Page_ClientValidate) == 'function') {
                        isPageValid = Page_ClientValidate();                       
                    } 
                } 
                if (isPageValid) {                  

                    document.getElementById('SubmitButtonOne').value = "Processing...";
                }            

                }

код позади:

protected void SubmitButtonOne_Click(object sender, EventArgs e)
    {       
        try
        {              
          // some functionality                   

        }

        catch (Exception)
        {
           //show errror message
        }

    }

Ответы [ 3 ]

2 голосов
/ 19 мая 2011

Ожидаемое поведение.

После того, как Page_ClientValidate сработает из-за вашего явного вызова внутри метода PleaseWaitShow, а во-вторых, это неявный вызов, сделанный нажатием кнопки PostBack.

Итак, вы дважды видите окно сообщения ValidationSummary.

У меня нет решения, чтобы обойти это, но я буду обновлять, если что-то ударит.

Примечание: Я хотел бы отметить одну вещь: поскольку у вас есть ValidationGroup = "Cases" на кнопке отправки, вы должны передать это в свой метод Page_ClientValidate.

Обновление 1: Один из способов, который я могу придумать, - это попробовать что-то вроде этого:

1: OnClientClick="return PleaseWaitShow();"

2: вернуть isPageValid из PleaseWaitShow ():

function PleaseWaitShow() {
            var isPageValid = true;
            ....
            ....
            ....
            return isPageValid;
        }
0 голосов
/ 20 марта 2017

если вы используете метод Page_ClientValidate, вы должны установить причинную проверку на ложь. CausesValidation="false"

потому что Page_ClientValidate уже делает это для кнопки или элемента управления, которые вы проверяете

0 голосов
/ 02 апреля 2014

Нет, это не ожидаемое поведение.Скорее, это ошибка в JS-коде проверки ASP.NET.

Функция ValidationSummaryOnSubmit проходит по всем сводкам, а для каждой сводки - по всем валидаторам.Если не указана группа, то каждое сообщение валидатора добавляется, что приводит к 2 (3, 4, 5?) Повторениям одних и тех же сообщений.

Я решил проблему, исправив функцию (начиная со строки 53 илиитак):

....

for (i = 0; i < Page_Validators.length; i++)
{
    var validator = Page_Validators[i];

    if (validator.validationGroup != null && summary.validationGroup != null)
    {
        if (validator.validationGroup != summary.validationGroup) continue;
    }

    if (!validator.isvalid && typeof (validator.errormessage) == "string")
    {
        s += pre + validator.errormessage + post;
    }
}

....
...