segunda-feira, 21 de dezembro de 2009

Chamando função do lado servidor com Javascript

Ja vi em muitos lugares essa dúvida, e vi muitas soluções complicadas, explicações gigantes para resolver esse problema.
Aqui mostro de uma forma mais direta como resolver esse problema de chamar uma função C# por exemplo com Javascript.
Primeiro no código fonte de sua página adicione um método estático com o atributo WebMethod. Seu código ficará assim:

public partial class _Default : System.Web.UI.Page
{
     protected void Page_Load(object sender, EventArgs e)
     {

     }

     [System.Web.Services.WebMethod]
     public static void MeuMetodo()
     {
     }
}

Agora no seu html adicione um ScriptManager colocando EnablePageMethods="true" e logo abaixo dele adicione sua função javascript, ficando assim:

<form if="form1" runat="server">
    <asp:scriptmanager EnablePageMethods="true" runat="server"></asp:scriptmanager>
    <script type="text/javascript">
          function Metodo() {
                PageMethods.MeuMetodo();
          }
    </script>
    <button onclick="javascript:Metodo();">Clique</button>
</form>

Esse pequeno artigo mostra de maneira simples como chamar uma função que está do lado do servidor por Javascript.

Até a próxima.