Un validador ASP.NET MVC para asegurarse de que al menos una casilla esté marcada

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 en cada grupo esté marcada.

Estoy haciendo la validación en el lado del servidor para que un usuario no pueda piratear ninguna validación del lado del cliente. (Agregaré la validación del lado del cliente con jQuery más tarde; eso es fácil).

Entiendo 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 pueda aceptar una lista arbitraria de propiedades de casillas de verificación para asegurarme de que al menos uno de ellos sea cierto. Supongo que tendré que llamar a los atributos de esta manera:

[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?

¿O hay una forma diferente de hacer este tipo de validación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta