Diego Bersano – Nuevo blog de .NET

Quiero compartirles el nuevo blog de programación de mi amigo y compañero Diego Bersano. Con “Diegote” hace mucho tiempo que venimos trabajando en proyectos bajo tecnologías .NET – sobre todo con ASP.NET MVC y Windows Phone – y es una excelente noticia que haya decidido compartir sus conocimientos en un blog.

Diego Bersano Blog

Diego Bersano Blog

Realmente me pone feliz que mis compañeros contribuyan de este forma con la comunidad y desde ya que les recomiendo seguirlo!

ASP.NET MVC 4 – Remote Validation

Como ya hemos visto en un post anterior con solo definir un conjunto estático de reglas en los atributos de nuestro modelo basta para definir las validaciones del lado del cliente (esto gracias a la librerías DataAnnotations – C# – y jquery Validation – JS -). Sin embargo, hay situaciones donde este conjunto estático de reglas no es suficiente, y es necesario aplicar lógica “de negocio” en la validación de un atributo (por ejemplo, un formulario de registración en el que se necesita validar si el e-mail ingresado no esta asociado a una cuenta ya existente). Los casos similares a este último son apropiados para implementar validaciones remotas.

ASP.NET MVC 4 nos provee un mecanismo muy simple para realizar validaciones remotas. Por un lado vamos a necesitar un método de acción en donde vamos a realizar la lógica de validación propiamente dicha. Podría ser algo como lo siguiente:

Método de Acción donde realizamos la validación.

Método de Acción donde realizamos la validación.

Como podemos ver, la acción devuelve un objeto JsonResult indicando si la validación fue exitosa (true value) y en caso contrario un mensaje explicativo (string value). Como segundo parámetro de la respuesta, le pasamos el valor de enumerado JsonRequestBehavior.AllowGet el cual nos permite enviar JSON en una respuesta de una petición GET.

Bien, ahora para asegurarnos que la validación remota se dispare, debemos agregar el atributo [Remote] en el modelo. Este atributo espera el nombre del controlador y la acción que deben ser llamadas. Cuando el usuario ingrese los datos en la caja de texto, el cliente sabe que debe invocar al método de acción indicado con el valor ingresado:

Agregando el atributo Remote a nuestro modelo.

Agregando el atributo Remote a nuestro modelo.

También es necesario habilitar las características ClientValidation y UnobtrusiveJavascript desde el web.config:

1:<appSettings>
2:  <add key= "ClientValidationEnabled " value= "true "/> 
3:  <add key= "UnobtrusiveJavaScriptEnabled " value= "true "/> 
4:</appSettings>

Por último corremos la aplicación y probamos nuestra validación remota:

Remote Validation in action!

Remote Validation in action!

Espero que les sea de utilidad!