domingo, 10 de junio de 2012

Llamar codigo JavaScript desde C# (ASP.NET)

En ocasiones es necesario e importante ejecutar código JavaScript o llamar funciones de JavaScript  encontradas en la pagina ASP.NET. Para ellos existen métodos que permiten hacer esta tarea, a continuación enuncio varios ejemplos para llamar funciones de JavaScript desde CodeBehind C#.

El primer ejemplo es para llamar una función "MostrarOcultarDiv();" el cual como su nombre lo indica, permite visualizar y ocultar un elemento DIV de HTML con ID "divAgregar".


////////////////// CODIGO JAVASCRIPT ///////////////////// 

function MostrarOcultarDiv()
{
    var div = document.getElementById("divAgregar");

    if (div.style.display == "none")
        div.style.display = "block";
    else
        div.style.display = "none";
}


////////////////// CODIGO C# (CodeBehind) ///////////////////// 


protected void BtnGuardar_Click(object sender, EventArgs e)
{
    ...

    //Llamar funcion MostrarOcultarDiv() desde codigo C#
    // Ambas lineas de código funcionan.
    ClientScript.RegisterStartupScript(this.GetType(), "myScript", "MostrarOcultarDiv();", true);
    ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script>javascript:MostrarOcultarDiv();</script>");
        
}




El segundo ejemplo ejecuta una instrucción JavaScript "Alert" que muestra un mensaje luego de guardar unos datos.



////////////////// CODIGO C# (CodeBehind) /////////////////////  


protected void BtnGuardar_Click(object sender, EventArgs e)
{
    ... 

    //Ejecutar código 'Alert' JavaScript desde C#
    ClientScript.RegisterStartupScript(this.GetType(), "myScript""<script>javascript: alert('Se guardaron los datos satisfactoriamente');</script>");
        
}



9 comentarios:

  1. hola una consulta para llamar a la function MostrarOcultarDiv(), esta la declaraste en tu Default.apx o donde y de que manera Muchas gracias.

    ResponderEliminar
    Respuestas
    1. Saludos,
      La función javaScript MostrarOcultarDiv() se encuentra en la pagina aspx, por ejemplo: Default.aspx, y el llamado desde el codigo fuente, se hace desde el codebehind de esa misma pagina, es decir, Default.aspx.cs

      Eliminar
  2. ¿Cómo se ejecutaría esta función desde el evento clic del guardar pasándole los dos valores, y guardando el resultado en una variable .net?

    function suma(a, b) {
    return a * b;
    }


    Gracias.

    ResponderEliminar
    Respuestas
    1. Saludos,
      La verdad le comento que nunca he realizado ese tipo de llamado, pero una respuesta o posible opción, es que esa multiplicación o asignación la haga sobre un control ASP, p.e. el Text de un Label, y luego desde el codigo C#, tomas ese valor. Aunque eso tampoco lo he realizado, es la unica salida que le puedo ver.

      Eliminar
  3. mi duda es porque no me funciona la solucion ya declare las funciones js en mi aspx y desde el codebehind mando llamar a la funcion y nones

    ResponderEliminar
    Respuestas
    1. Tocaria ver el codigo para ver si existe algun error.

      Eliminar
    2. Este comentario ha sido eliminado por el autor.

      Eliminar
    3. Lo que puedes probar es colocar tu methodo javascript antes que cualquier otro methodo, ya que yo tuve ese problema pero coloque el casi casi al inicio de la pagina, bajo el tag del body y me funciono!!!

      Saludos.

      Eliminar
  4. Buen dia


    COmo se puede ejecutar un script desde el Behind de una pagina de tipo ascx ?


    Gracias

    ResponderEliminar