Вот как вы можете начать хотя бы для проверки на стороне сервера.Вот очень хорошая статья , которая иллюстрирует несколько концепций.
Атрибут проверки:
public class CheckBoxesValidationAttribute : ValidationAttribute
{
public CheckBoxesValidationAttribute (int min, int max)
{
Min = min;
Max = max;
}
public int Min { get; private set; }
public int Max { get; private set; }
public override bool IsValid(object value)
{
var values = value as IEnumerable<bool>;
if (values != null)
{
var nbChecked = values.Where(x => x == true).Count();
return Min <= nbChecked && nbChecked <= Max;
}
return base.IsValid(value);
}
}
Модель:
public class MyViewModel
{
[CheckBoxesValidation(1, 2, ErrorMessage = "Please select at least one and at most 2 checkboxes")]
public IEnumerable<bool> Values { get; set; }
}
Контроллер:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
Values = new[] { true, false, true, false }
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
Просмотр (~ / Views / Home / Index.cshtml):
@Html.ValidationSummary()
@using (Html.BeginForm())
{
@Html.EditorFor(x => x.Values)
<input type="submit" value="OK" />
}
Шаблон редактора (~/Views/Home/EditorTemplates/bool.cshtml
):
@model bool
@Html.CheckBoxFor(x => x)