4

내가 선택할 수있는 최소 숫자와 최대 숫자를 지정할 수있는 확인란 필드 그룹에서 사용할 수있는 재사용 가능한 유효성 검사기를 갖고 싶습니다. jQuery에 눈에 띄지 않는 자바 스크립트를 사용하여 프레임 워크의 유효성을 확인하기 위해 서버 쪽 검사와 클라이언트 쪽 유효성 검사를 모두 만드는 방법을 정확히 모르겠습니다.최소 및 최대 수의 확인란에 대해 ASP.NET MVC3 유효성 검사기를 만드는 방법은 무엇입니까?

This question은 클라이언트 측 어댑터에서 좋은 시작으로 보이지만 서버에서 어떻게 유효성을 검사 할 수 있습니까?

답변

5

최소한 서버 측 유효성 검사를 시작할 수있는 방법은 다음과 같습니다. 여러 개념을 보여주는 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) 
+0

+1 우수 답변! =) 매우 유용한 것들! – gideon

1

Brad Wilson은 mvcConf에서 mvc의 유효성 검사에 대해 훌륭한 설명을했습니다.