최소한 서버 측 유효성 검사를 시작할 수있는 방법은 다음과 같습니다. 여러 개념을 보여주는 very nice article입니다.
검증 속성 :
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);
}
}
보기 (~/조회/홈/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)
+1 우수 답변! =) 매우 유용한 것들! – gideon