2009-05-29 30 views
14

Muszę wstawić trochę kodu Javascript do procesu, gdy formularz WWW jest przesyłany, ale po sprawdzeniu poprawności strony klienta.RegisterOnSubmitStatement po sprawdzeniu poprawności po stronie klienta

RegisterOnSubmitStatement wydaje się umieścić javascript przed walidacją.

Ktoś wie, jak uzyskać renderowanie po?

Rozwiązanie znaleziono: W kontroli internetową, umieścić coś takiego:

protected override OnInit(EventArgs e) { 
    Page.SaveStateComplete += new EventHandler(RegisterSaveStuff); 
    base.OnInit(e); 
} 

void RegisterSaveStuff(object sender, EventArgs e) { 
    Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "name", "JS code here"); 
} 
+0

Niestety ożywić trupa, ale myślę, że jest to nieco mniej hacky użycie zdarzenia PreRenderComplete. –

Odpowiedz

5

Po niektórych badań online i bawić się z nim, zorientowałem się, że można to zrobić przez zahaczenie do strony za SaveStateComplete zdarzenie. Zgaduję, że zgłoszenie zatwierdzania jest rejestrowane podczas zdarzenia PreRender, więc jeśli zarejestrujesz je po tym (w zdarzeniu SaveStateComplete), możesz je później pobrać.

Musisz go ponownie zarejestrować, ale to nie jest wielka sprawa, ponieważ nie polegam na ViewState dla mojego JS.

+2

To jest doskonałe. Proszę napisać jakiś kod. – ichiban

+0

Rozwiązanie dodane do pytania w celu ułatwienia czytania – Jared

8

Zgadza się, RegisterOnSubmitStatement NIE DZIAŁA w funkcji init. Powinny być wywoływane po zakończeniu cyklu stronicowania. I rzecz właściwym miejscem dla nich jest:

"PreRenderComplete"

protected override OnInit(EventArgs e) 
{ 
    Page.PreRenderComplete+= new EventHandler(Page_PreRenderComplete); 
    base.OnInit(e); 
} 

void Page_PreRenderComplete(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "name", "JS code here"); 
} 
Powiązane problemy