Estoy usando la validación de anotación de datos extensamente en ASP.NET MVC 2. Esta nueva característica ha sido un gran ahorro de tiempo, ya que ahora puedo definir la validación del lado del cliente y la validación del lado del servidor en un solo lugar. Sin embargo, mientras hacía algunas pruebas detalladas, me di cuenta de que es bastante fácil para alguien eludir la validación del lado del servidor si dependiera solo de la validación de la Anotación de datos. Por ejemplo, si definí un campo obligatorio anotando la propiedad con el atributo [Obligatorio] y coloqué un cuadro de texto para ese campo obligatorio en un formulario, un usuario simplemente podría eliminar el cuadro de texto del DOM (que puede hacerse fácilmente a través de Firebug) y ahora la validación de anotación de datos no se activará en esa propiedad durante el enlace modelo dentro de un controlador. Para asegurar que se active la validación "requerida", puedo repetir la validación después de que ocurre la vinculación del modelo, pero entonces estaría repitiendo mi lógica de validación.ASP.NET MVC: ¿Es suficiente la validación de anotación de datos?
¿Cuál es la recomendación de todos sobre la validación? ¿La validación de anotación de datos es suficiente? ¿O es necesario repetir la validación para garantizar que las validaciones se activen en todas las situaciones?
Seguimiento comentario: Sobre la base de las respuestas a continuación, parece que no puedo confiar en la validación del modelo Binder y anotación de datos solo. Dado que estamos concluyendo que se requiere una validación adicional del lado del servidor, ¿hay alguna manera fácil para que mi capa de Servicio active la validación en función de lo que se ha definido en las Anotaciones de datos? Parece que esto nos dará lo mejor de ambas palabras ... no necesitaremos repetir el código de validación, pero aún así nos aseguraremos de que la validación se ejecute incluso si la Carpeta del modelo no la desencadena.
Voy a publicar este comentario de seguimiento como una pregunta separada, ya que plantea una pregunta diferente a la original.
respuesta de Koritnik responde a la consulta de seguimiento. Hago mi validación similar a la respuesta que publicó. La misma definición de DataAnnotation se puede usar tanto para la validación del servidor como del cliente. –
La validación de la anotación de datos está bien si los atributos de validación provistos y el marco mismo le conviene. El comportamiento con Required se modificó para ASP.NET MVC 2 RTM debido a los comentarios de la comunidad, por lo que [Obligatorio] ahora funciona como era de esperar. Opcionalmente, echa un vistazo a: Validation Block (Enterprise Library), xVal, NHibernate Validators (supuestamente no tiene dependencia de NHibernate ORM). – miha
'" Voy a publicar este comentario de seguimiento como una pregunta separada, ya que plantea una pregunta diferente a la original "." Un enlace a eso no sería una mala idea, ¿eh? – Sinjai