ASP.NET y PageMethods

Posted on


Hoy día una de las principales características que se ven en las aplicaciones Web es la realizar operaciones sin necesidad de recargar la página, y por supuesto ASP.NET ofrece todas las herramientas para implementar esta funcionalidad. Una de las varias opciones de las que disponemos son los PageMethods o métodos de página.

Ahora vamos a ver que características tienen los PageMethods:

  • Deben ser públicos y estáticos (Shared en Visual Basic).
  • Se deben decorar con el atributo WebMethod.
  • Solo pueden ser llamados desde la misma página en donde han sido creados.
  • No tienen acceso a los controles de la página.
  • Permiten ser invocados desde JavaScript.
  • En el ScriptManager se debe activar el uso de ellos.

La sintaxis general para llamar un PageMethods es:

   1:  PageMethods.<NombreMetodo>(<variable (s)>,<FunciónCorrecta>,<FunciónError>);

Primero colocamos la palabra PageMethods, luego el nombre del método y en la firma primero la o las variables que recibe el método, si no recibe variables no colocamos nada, en caso contrario las colocamos separadas por una coma, luego la función que se va a ejecutar si el método se ejecutó correctamente y finalmente la función si se produjo algún error.

Ahora vamos a realizar un ejemplo en donde vamos a implementar un PageMethod, la idea del ejemplo es permitir ingresar un nombre de usuario, tener un botón de Comprobar Disponibilidad el cual va a consumir el método y luego informaremos al usuario si dicho nombre de usuario esta disponible o no.

1. Lo primero que necesitamos es agregar un ScriptManager a la página y establecer la propiedad EnablePageMethods en true.

   1:  <asp:ScriptManager ID="ScritpManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>

2. Ahora vamos a utilizar jQuery para manejar el evento click del botón, así que hacemos referencia a dicha librería:

   1:  <script src="scripts/jquery-1.5.1.min.js" type="text/javascript"></script>

3. Vamos a crear ahora el método:

   1:  <WebMethod()>
   2:  Public Shared Function UsuarioDisponible(ByVal sUser As String) As Boolean
   3:      If sUser = "admin" Then
   4:          Return False
   5:      Else
   6:          Return True
   7:      End If
   8:  End Function

En la línea 1 le agregamos el atributo WebMethod, luego le decimos que será una función publica que va a recibir un dato de tipo string y que va a devolver un valor booleano, será false si el usuario no esta disponible, de lo contrario true, en la línea 3 y 4 verificamos si el valor de la variable sUser es admin entonces que devuelva false (es decir usuario no disponible), en este caso lo ideal sería hacer la validación contra una base datos y verificar si el usuario existe,  y finalmente si el usuario no es admin devolvemos true lo cual quiere decir que SI está disponible.

4. Por último debemos consumir el método desde el cliente, así que tendremos:

   1:  <script type="text/javascript">
   2:  $(function () {
   3:      $("#<% = btnVerificar.ClientID %>").click(function () {
   4:          var user = $("#<% = txtUser.ClientID %>").val();
   5:          if (user == null || user == '') {
   6:              alert("Ingrese el nombre del usuario");
   7:              return false;
   8:          }
   9:          else {
  10:              PageMethods.UsuarioDisponible(user,
  11:                  function (resul) {
  12:                      if (resul) {
  13:                          $("#<% = lblEstado.ClientID %>")
  14:                              .html("Usuario disponible")
  15:                              .css("color", "Green");
  16:                      }
  17:                      else {
  18:                          $("#<% = lblEstado.ClientID %>")
  19:                              .html("Usuario NO disponible")
  20:                              .css("color", "Red");
  21:                      }
  22:                  },
  23:                  function () {
  24:                      alert("Se ha producido un error al verificar el usuario");
  25:                  });
  26:              return false;
  27:          }
  28:      });
  29:  })
  30:  </script>

De las líneas 1 – 8 lo que se hace en resumen es capturar el evento click del botón y verificar que se haya ingresado un nombre de usuario, ahora en la línea 10 hacemos el llamado al método UsuarioDisponible, como primer parámetro le enviamos la variable que contiene el nombre de usuario ingresado, como segundo parámetro tenemos la función que se va a ejecutar si el PageMethods se ejecutó satisfactoriamente, en la función declaramos una variable llamada user la cual va a tener el resultado devuelvo por él método, como el método devuelve un valor booleano en la línea 11 preguntamos si el valor es true, si es así en el label lblEstado colocamos el texto Usuario disponible de color verde, pero si el valor devuelto es false el texto a mostrar es Usuario NO disponible de color rojo. En el tercer parámetro establecemos la función que se va ejecutar si se produce algún error al realizar el llamado al PageMethods. Finalmente le decimos return false, esto para evitar que al hacer click en el botón se realice el postback en la página.

Espero que les haya sido de utilidad el artículo.

Les dejo el código con el ejemplo:

Ejemplo en VB !

Ejemplo en C# !

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s