2011-10-14 6 views
5

Mam stronę asp.net z wieloma zestawami podsumowań sprawdzania poprawności z ShowMessageBox="True" i kilkoma walidatorami. Natknąłem się na sytuację, gdy sprawdzanie poprawności nie powiedzie się poprawnie, ale następne kliknięcie, które normalnie wywołałoby odświeżenie strony, nie powoduje odświeżenia. Tak więc kroki wyglądają tak:Dlaczego mój formularz nie zostanie odesłany po sprawdzeniu poprawności?

  1. Kliknij przycisk, który uruchamia sprawdzanie poprawności.
  2. Walidacja kończy się niepowodzeniem i wyświetlany jest komunikat z komunikatem o błędzie.
  3. Kliknij inny przycisk, który nie jest sprawdzany, ale powinien wywołać oddzwonienie. Nic się nie dzieje.
  4. Kliknij ten sam przycisk, co w kroku 3, ponowne odświeżenie jest zgodne z oczekiwaniami.

Co może powodować takie zachowanie?

EDYCJA: Walidacja była wykonywana w następujący sposób. Na stronie asp:

<asp:Button runat="server" id="btn" onClientClick="return DoValidation();" /> 

w javascript:

function DoValidation() { 
    if (!Page_ClientValidate('group1')) 
     return false; 
    if (!Page_ClientValidate('group2')) 
     return false; 

    return true; 
} 
+0

prawdopodobnie będziesz musiał opublikować kod, aby uzyskać dobrą odpowiedź. –

+0

spróbuj ustawić właściwość reasonvalidation na false dla drugiego przycisku? – IrishChieftain

+0

Próbowałem ustawić to na false i otrzymałem ten sam wynik. Strona jest dość skomplikowana. Miałem nadzieję, że ktoś widział podobną sytuację. – Mykroft

Odpowiedz

13

Po pracy na ten temat i co ostrożnego korzystania z debugera I w końcu okazało się, że kiedy robisz walidacji sposób opisany w edycji do pytanie, czy boolean jest ustawione na niepowodzenie, które blokuje następny postBack strony przed przejściem. Uważam, że dzieje się tak, gdy sprawdzanie poprawności odbywa się automatycznie zamiast jawnie, tak jak ja to robię. Zmiana opisanego powyżej języka javascript wygląda następująco:

function DoValidation() { 
    if (!Page_ClientValidate('group1')) { 
     Page_BlockSubmit = false; 
     return false; 
    } 
    if (!Page_ClientValidate('group2')) { 
     Page_BlockSubmit = false; 
     return false; 
    } 

    return true; 
} 

Powoduje, że problem ustaje. Mam nadzieję, że pomoże to następnej osobie, która popełni ten sam błąd, co ja.

+0

Czas dla debuggera został dla mnie zapisany. Dzięki! –

+0

Chciałbym zobaczyć twoją odpowiedź godzinę temu! – clamchoda