viernes, 8 de enero de 2010

ASP.NET Llamar JavaScript desde C#

Voy a explicarte un ejemplo con un par de posibilidades para llamar a un método JavaScript desde tu código de servidor C#. La clave está en el método "RegisterStartupScript" que nos permite registrar un código JavaScript desde el código de C# y que éste sea interpretado por el navegador. Te puedes descargar el código de ejemplo aquí.

La primera posibilidad es que quieras invocar un método JavaScript desde el Page_Load de tu página ASPX, para ello puedes hacer lo siguiente:


 

///<summary>

/// Evento de carga de la página

///</summary>

///
<param name="sender"></param>

///
<param name="e"></param>

protected
void Page_Load(object sender, EventArgs e)

{

//Se llama a un javascript cuando la página carga

string mensaje = "Este mensaje se genera desde c#";

ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script>javascript:mostrarMensaje('" + mensaje + "');</script>");

}


 

La segunda posibilidad es que quieras ejecutar un método JavaScript desde el evento de un control de tu página ASPX:


 

///<summary>

///El botón va a ejecutar un código javascript

///</summary>

///<param name="sender"></param>

///<param name="e"></param>

protected
void btnClick_Click(object sender, EventArgs e)

{

//Se genera el código javascript que se quiere ejecutar

System.Text.StringBuilder sb = new System.Text.StringBuilder();

sb.Append(@"<script language='javascript'>");

sb.Append(@"var lbl = document.getElementById('lblMensaje');");

sb.Append(@"lbl.style.color='red';");

sb.Append(@"alert(lbl.innerText);");

sb.Append(@"</script>");


 

if (!ClientScript.IsStartupScriptRegistered("JSScript"))

{

ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());

}

}


 

Espero que te sea de utilidad y recuerda que puedes descarte el código aquí.

15 comentarios:

  1. Buena aportación. Solo cabe señalar que para hacer mas funcional y atractivo un artículo hay que relacionarlo con un problema práctico.

    Saludos!!

    ResponderEliminar
  2. Muy buena la info la verdad me solucionaste la vida, ya que no tenia idea de como llamar a una funcion javascript desde asp.net, y lo mejor es que lo posteaste en C# lo cual le da mas valor a la info ja ja ja. Saludos!

    ResponderEliminar
  3. excelente, lo necesitaba..thanks

    ResponderEliminar
  4. muy buena info... muy al grano!

    ResponderEliminar
  5. No me hace nada, estoy tratando de limpiar unos controles después que doy click en un boton que lo que hace es adicionar los valores de esos campos en un gridview, que puede estar pasando ?

    ResponderEliminar
  6. Esta muy bien el ejemplo, pero el caso que tengo es,busco un registro en mi DB, si existe, debo enviarle un msg al cliente que ya existe y el cliente toma la decision YES o NOT, es como el confirmar del delete,pero en este caso primero hay que buscar el dato en la DB para luego dejarlo pasar o NO , VB.NET esto es a nivel WEB

    ResponderEliminar
  7. pura mierda esta vaina no hace un culo

    ResponderEliminar
  8. excelente ejemplo me sacaste de un apuro.

    ResponderEliminar
  9. No funciona en Firefox estimado, Firefox no ejecuta javascript hasta terminar el código de servidor (CS). En Opera, Chrome e IE8 funciona. Alguna solucion parche para Firefox?

    ResponderEliminar
  10. Tengo una función javascript que le paso dos parámetros y me devuelve un valor, por ejemplo: suma(a,b). Devuelve: a+b
    Lo que pretendo en integrar la llamada de esa función en un bucle, poderle pasar los dos parámetros provenientes de variables .net y que me devuelva el resultado en una variable de .net
    Do Until True
    dim Total as integer

    --> suma(a,b)
    Loop

    Gracias por vuestra ayuda.

    ResponderEliminar
  11. Este comentario ha sido eliminado por el autor.

    ResponderEliminar