2009-05-29 10 views
14

Ich muss ein wenig Javascript in den Prozess einfügen, wenn ein Web Form übergeben wird, aber nachdem die clientseitige Validierung stattfindet.RegisterOnSubmitStatement nach clientseitiger Validierung

RegisterOnSubmitStatement scheint das Javascript vor der Überprüfung zu platzieren.

Wer weiß, wie man es nach Rendern bekommt?

Lösung gefunden: In einer Web-Kontrolle, habe ich so etwas wie diese:

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

wurden leider Zombie wieder zu beleben, aber ich denke, es ist etwas weniger hacky die PreRenderComplete Ereignis zu verwenden. –

Antwort

5

Nach einigen Recherchen online und um mit ihm zu spielen, habe ich herausgefunden, dass man es durch Einhaken in die SaveStateComplete Seite tun kann Veranstaltung. Ich schätze, die validate submit-Anweisung wird während des PreRender-Ereignisses registriert. Wenn Sie es danach (im SaveStateComplete-Ereignis) registrieren, können Sie es später abrufen.

Sie müssen es neu registrieren, aber das ist keine große Sache, weil ich nicht auf ViewState für meine JS angewiesen bin.

+2

Das ist ausgezeichnet. Bitte poste etwas Code. – ichiban

+0

Die Lösung wurde zur leichteren Lesbarkeit hinzugefügt – Jared

8

das ist richtig, die RegisterOnSubmitStatement funktionieren nicht in der init-Funktion. Es sollte im Seitenzyklus aufgerufen werden. dafür ich, was ist der richtige Ort:

„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"); 
} 
Verwandte Themen