NHibernate Validator en Winforms
Debido a que NHibernate.Validator es un framework para validar objetos, y no tiene restricciones acerca de donde realizar la validación, pensé que podría ser interesante tener algún tipo de integración con Winforms o Asp.Net. Por ahora me inclino hacia el lado de Winforms donde estoy más cómodo programando.
El siguiente ejemplo intenta validar un simple formulario con un par de cajas de texto:
Ahora bien, como fue validado esto? Usando NHibernate.Validator y unas clases ayudantes que se encuentran en Suricato.Winforms.Validation. La clase ViewValidator es la encarga de realizar los enlaces de los controles con las reglas. Esta es la configuración:
Como pueden ver, ViewValidator recibe el ErrorProvider que mostrará los controles que poseen inconsistencia en sus valores. Prácticamente lo que se hacer es enlazar un control de la UI con ciertas reglas que le corresponden a propiedades de un objeto. Por ejemplo el TextBox “tFirstName” se corresponde con las reglas de validación de la property “FirstName” en la clase Customer. Seguidamente se añade el evento que debe realizar la validación del control.
Esto se podría realizar de una manera más fácil? Si, con un esquema similar la clase SmartViewValidator realiza el enlace de los objetos y el registro de los eventos de manera más automática.
SmartViewValidator hará por nosotros algunas cosas automáticamente. Con un poco de menos de código se puede lograr el mismo trabajo, pero debemos ponernos de acuerdo en algunas normas en nuestro código.
Los controles, deben tener un prefijo en minúsculas, seguido del nombre de la propiedad que están representando. Por ejemplo si tenemos un control llamado “txtNombre”, el nombre de la propiedad sería “Nombre”, si escribimos “dtpFecha”, este DateTimePicker se corresponderá con la property “Fecha” de alguna clase.
Debemos acordarnos de inicializar estos controles luego de que InitializeComponent() sea llamado por nuestro formulario, en caso contrario el ErrorProvider valdrá null.
Ahora vemos como luce una clase que posee la validación de NHibernate.Validator:
Como pueden ver, con algunas clases podemos usar NHibernate.Validator también en la UI, solamente hace falta configurar 1 línea por control y todo queda integrado con Winforms.
Descargar el ejemplo de NHibernate.Validator + Winforms
One Response to NHibernate Validator en Winforms
Leave a Reply Cancel reply
-
Categories
- .NET
- ActiveRecord
- agil
- Alt.Net
- AOP
- Asp.net MVC
- blog
- C#
- codegeneration
- cosas interesantes
- db4o
- db4o-analyzer
- DLR
- enterprise-library
- expresiones regulares
- General
- Hibernate
- IoC
- it
- Java
- LINQ
- Linux
- Lucene
- Mocking
- Mono
- monosms
- MVC
- NAnt
- NHibernate
- NHibernate.Burrow
- NHibernate.Contrib
- NHibernate.Validator
- noticias
- O/R Mapping
- Open Source
- patrones
- personal
- podcast
- programación
- Redes Neuronales
- Refactoring
- regex
- Scrum
- Security
- Shards
- Sin Categoría
- Spring
- SqlServer
- Testing
- tips
- Tool
- tutorial
- Ubuntu
- uNHAddIns
- video
- Virtualización
- Visual Basic.Net
- Visual Studio
- VMWare
- Web
-
Articles
- June 2011
- May 2011
- November 2009
- October 2009
- April 2009
- March 2009
- February 2009
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- March 2006
- February 2006
- December 2005
- November 2005
- October 2005
-
Meta





No vi NHibernate Validator aun, pero me implemente uno propio que hace (solamente) esto. Lo anoto a mis entities con “restricciones” de validacion y luego el “framework” (200 lineas de codigo como mucho) Hace algo que a mi me parecio interesante:
Recorre los controles de un contenedor que se le envia, generalmente el form, o un group box, etc, luego mira los bindings que este tiene, casi siempre cuando yo programo bindeo los controles en tiempo de disenio, luego de ver que bindings tiene aplica las validaciones a los controles necesarios. El resultado de esto es que agregar validacion a un form siempre requiere las mismas (pocas) lineas que es para setear y hago incapie en que no tengo que decirle como validar cada control en particular (soporte para textbox y drop down lists de momento)