Tengo un proyecto ASP.NET MVC 2 en el que he creado un objeto de transferencia de datos para recibir datos de un formulario de página web. El formulario tiene dos grupos de casillas de verificación. Quiero validar el objeto para asegurarme de que al menos una de las casillas de verificación de cada grupo esté marcada.Un validador MVC de ASP.NET para asegurarse de que al menos una casilla de verificación está marcada
Estoy haciendo la validación en el lado del servidor para que el usuario no pueda hackear ninguna validación del lado del cliente. (Añadiré la validación del lado del cliente con jQuery más tarde; eso es fácil.)
Tengo entendido que tengo que crear mi propio ValidationAttribute personalizado para mi clase de objeto de transferencia de datos, pero no entiendo cómo crear y usar uno que puede aceptar una lista arbitraria de propiedades de casilla de verificación para asegurarse de que al menos uno de ellos sea verdadero. Estoy adivinando voy a tener que llamar a los atributos de este tipo:
[AtLeastOneCheckbox("set1check1", "set1check2", "set1check3",
ErrorMessage = "You must check at least one checkbox in set 1.")]
[AtLeastOneCheckbox("set2check1", "set2check2", "set2check3", "set2check4", "set2check5",
ErrorMessage = "You must check at least one checkbox in set 2.")]
public class MyFormDTO
{
...
}
¿Cómo sería la implementación de AtLeastOneCheckboxAttribute parece?
¿O hay una manera diferente en que debería hacer este tipo de validación?
Además, me pregunto por qué Microsoft MVC me está empujando a este sistema de validación 'atributo' para todo. Si uso las comprobaciones realizadas por RequiredAttribute y StringLengthAttribute y otros atributos de validación que coloco en cada propiedad, y luego también agrego un método IsValid() a mi objeto que hace otras comprobaciones en las propiedades de este objeto para decidir si es válido. ¿Hay alguna manera de que el modelo de estado refleje el resultado de mi método IsValid()? –