2011-12-20 2 views
11

IValidatableObject를 사용하여 양식 값의 유효성을 검사하려고합니다. 해당 필드 옆에 오류 메시지를 표시 할 수 있도록 ValidationResult를 특정 필드에 할당하려고합니다.ValidationResult를 특정 필드에 할당 하시겠습니까?

예를 들어 사용자가 암호를 두 번 입력하도록하고 두 번째 암호가 첫 번째 암호와 같지 않으면 유효성 검사에 실패한 다음 두 번째 암호 옆에 오류 메시지가 표시되도록 할 수 있습니다.

그러나이 방법은 모델 수준에서만 오류를 할당 할 수 있습니다. 모델 수준에서 나는 @Html.ValidationSummary(true)으로 표시되며 특정 모델 필드에 묶이지 않은 오류를 의미합니다.

ValidationResult에 대한 선언을 검토 한 결과이 속성에 도움이되는 속성이나 메서드가 표시되지 않습니다. 그래서 누구든지 IValidateableObject의 Validate 메서드 내에서 특정 필드에 ValidationResult를 할당하는 방법을 보여 주거나 그렇게 할 수 없다는 것을 확인할 수 있습니까?

(참고 : 예를 들어 암호 예를 처리하는 필터에 대한 답변이 없으므로 특히 IValidateObject의 제한 사항에 대해서만 알고 싶습니다.)

답변

23

가능합니다. ValidationResult에는 연결된 IEnumarable 문자열을 허용하는 오버로드가 있습니다.

예.

 public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (Password != PasswordConfirmation) 
      yield return new ValidationResult("Password confirmation must match", new[] { "PasswordConfirmation" }); 
    } 
+1

예! 나는 이것을 발견하고 내 대답으로 올리려고했다. – Faust

관련 문제