2009-05-29 24 views
14

Necesito insertar un poco de Javascript en el proceso cuando se envía un formulario web, pero después de que se realiza la validación del lado del cliente.RegisterOnSubmitStatement después de la validación del lado del cliente

RegisterOnSubmitStatement parece colocar el javascript antes de la validación.

¿Alguien sabe cómo renderizar?

solución encontrada: En un control de la tela, puse algo como esto:

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

este momento para revivir un zombi, pero creo que es un poco menos hacky utilizar el evento PreRenderComplete. –

Respuesta

5

Después de algunas investigaciones en línea y jugar un rato con él, me di cuenta de que lo puede hacer mediante la conexión en SaveStateComplete de la Página evento. Supongo que la declaración de validación se registra durante el evento PreRender, por lo que si la registra después (en el evento SaveStateComplete) puede obtenerla después.

Tienes que volver a registrarlo, pero eso no es un gran problema porque no estoy confiando en ViewState para mi JS.

+2

Eso es excelente. Por favor publique un código – ichiban

+0

Solución añadida a la pregunta para facilitar la lectura – Jared

8

correcto, el RegisterOnSubmitStatement NO FUNCIONA en la función init. Se debe invocar después en el ciclo de la página de luz. Me cosa el lugar adecuado para ello es:

"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"); 
} 
Cuestiones relacionadas