c# - por - Ejecutar la función de javascript después de la devolución de datos de asp.net sin Ajax
llamar metodo c# desde ajax (5)
Deseo ejecutar una función de JavaScript después de la devolución de datos de asp.net sin usar ajax.
He intentado lo siguiente en mi método par sin suerte:
Page.ClientScript.RegisterStartupScript(GetType(), "ShowPopup", "showCheckOutPopIn(''Livraison'',556);");
No recuerdo de improviso cuál es la sintaxis / uso exacto para las cosas de Page.ClientScript ... que parece que debería funcionar de forma directa. Pero si se esfuerza mucho, solo tiene un control de usuario simple que puede habilitar / deshabilitar dinámicamente que escribirá un método de JavaScript en bloques de scripts después de la devolución de datos. Cuando se carga la página, esta secuencia de comandos ejecuta cualquier funcionalidad que desee ejecutar.
por supuesto, la pregunta es, ¿qué es lo que debe hacer este javascript que no podrías hacer en el servidor a través de alguna propiedad u otra configuración que se refleje en el marcado?
Solución
Necesitaba agregar las etiquetas de script usando la siguiente sobrecarga.
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "alert(''Success!'');", true);
Encontrado: Re: execute javascript after postback
Debería usar la clase ScriptManager, ya que la propiedad Page.ClientScript está obsoleta ...
La clase ClientScriptManager es nueva en ASP.NET 2.0 y reemplaza los métodos de clase de página para administrar scripts que ahora están en desuso.
Referencia: MSDN - Propiedad de Page.ClientScript
La ventaja con ScriptManager es que funciona con devoluciones de datos asincrónicas, por lo que si está utilizando AJAX no funcionará con ClientScriptManager.
Tu código se vería así:
ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowPopup", "showCheckOutPopIn(''Livraison'',556);", true);
Tenga en cuenta también que si está utilizando AJAX y tiene un fragmento de código javascript, que desea ejecutar en varias devoluciones de datos, entonces debe consultar su UpdatePanel en el primer argumento, por ejemplo:
ScriptManager.RegisterStartupScript(MainUpdatePanel, typeof(string), "ShowPopup", "showCheckOutPopIn(''Livraison'',556);", true);
Esta persona tenía el mismo problema, creo que la solución de él también funcionó para mí:
http://forums.asp.net/t/1121450.aspx?HOW+TO+run+javascript+on+each+partial+postback+
Y la solución es simplemente usar la función de clase ScriptManager: ScriptManager.RegisterStartupScript(this, typeof(Sections), "Initialize", "initialize();", true);
Quizás tarde, pero puedes usar esto
Página principal :
ScriptManager.RegisterStartupScript(this, typeof(Page),
"ShowRegister", string.Format(@"$( document ).ready(function() {{ShowErrorMessage(''{0}'');}});", message), true);true);
Formulario web :
Page.ClientScript.RegisterClientScriptBlock(GetType(), "MEssage",
"$( document ).ready(function() {
ShowMessage(''{0}'');", true);