MVC Validation (View/Controller)
La validación en MVC con SharpArchitecture viene integrada con NHValidator.
Gracias a esto nosotros podemos poner atributos a las clases del Core para validar sus propiedades, en el controlador podemos consultar si cumple con estas validaciones con el metodo IsValid() de la clase a validar.
Además de esto, podemos también validar si del lado de la vista el objeto cumple con las validaciones derivadas de los atributos consultando la propiedadViewData.ModelState.IsValid en el controlador.
En la vista tenemos tambien la integración, por ejemplo:
<div>
<%= Html.TextBox("Entity1. Property1", (ViewData.Model.Brand != null) ? ViewData.Model.Entity1.Property1.ToString() : "")%>
</div>
<%= Html.ValidationMessage("Entity1. Property1")%>
En este caso el helper Html.ValidationMessage("Brand.Name") renderizará el mensaje de error en caso de no cumplir con las reglas de validaciones para la clase Entity y su propiedad Property1.
Entonces nos queda como resultado la siguiente validación en el controlador antes de poder persistir la entidad:
if (ViewData.ModelState.IsValid && Entity1.IsValid() ).
Esto parece redundante, pero no lo es debido a que Entity1.IsValid() abarca tambien validaciones de reglas de negocio que pudieron ser definidas en el Core.
Tambien podemos quitar o agregar errores de validación para que los muestre la vista, en si ViewData.ModelState es un diccionario, donde la key esta compuesta por un string (que en el caso de entidades es "Entidad.Propiedad") y el value es el mensaje de error a mostrar.
Para agregar errores usamos ViewData.ModelState.AddModelError("MyKey", "Mensaje de error a mostrar") y para quitar el error ViewData.ModelState.Remove("MyKey"), donde "Entidad.Propiedad" es el string que usamos en <%= Html.ValidationMessage("MyKey")%>.
Para terminar les digo que el helper <%= Html.ValidationSummary() %> muestra todos estos errores en forma de lista.