Invocar evento C# desde Javascript

Hace mucho que no posteo nada, pero ahora les comparto una opción para poder invocar un evento que se encuentre en nuestro CodeBehind desde una funcion de Javascript.

Por ejemplo, si queremos invocar un Evento click que esta asociado a un Boton ASP.NET, desde alguna funcion Javascript haremos lo siguiente:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <script type="text/javascript">
        function z_metjsClick() {
            var boton = document.getElementById('z_btnAceptar');
            boton.click();
        }
    </script>
    <title></title>
</head>
<body>
    <form id="z_FormPrincipal" runat="server">
    <div>
        <asp:Button ID="z_btnAceptar" runat="server" Text="Aceptar" onclick="z_btnAceptar_Click" />
        <br /><br />
        <div onclick="z_metjsClick()" style="cursor:pointer;">Click aqui para invocar el CodeBehind</div>
        <br />
        <asp:Label ID="z_lblMensaje" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>




Donde:

Tenemos una funcion JavaScript "z_metjsClick()" que obtiene el botón a través de su ID, una vez que es asignado, ejecutamos el evento click.

El formulario contiene un control asp:Button con un evento onclick="z_btnAceptar_Click", que es el evento del codebehind. Un DIV como ejemplo (aqui dependiendo de lo que requieran, el caso es invocar a la funcion javascript), con el evento onclick="z_metjsClick()" que ejecuta a esa función. Y por último un control asp:Label, donde se mostrara un texto.

El Evento del asp:Button en el codebehind:


protected void z_btnAceptar_Click(object sender, EventArgs e)
        {
            z_lblMensaje.Text = "Usted hizo Click";
        }


Cuando hacemos clic sobre el div, será invocado el evento Click del asp:Button, mostrando el resultado en el asp:Label



Bueno eso es todo, es algo sencillo, posteriormente profundizaremos un poco mas en el tema. haciendo uso de los WebMethods.



Ailas...