Here you can start at least server-side verification. Here is a very good article that illustrates several concepts.
Validation Attribute:
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); } }
Model:
public class MyViewModel { [CheckBoxesValidation(1, 2, ErrorMessage = "Please select at least one and at most 2 checkboxes")] public IEnumerable<bool> Values { get; set; } }
Controller:
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); } }
View (~ / Views / Home / Index.cshtml):
@Html.ValidationSummary() @using (Html.BeginForm()) { @Html.EditorFor(x => x.Values) <input type="submit" value="OK" /> }
Editor Template ( ~/Views/Home/EditorTemplates/bool.cshtml ):
@model bool @Html.CheckBoxFor(x => x)
source share