에서 공개 목록
가 어떻게 DataAnnotation 유효성 검사와 위의 목록에 각 문자열의 유효성을 검사 할 수 이 MVC3에서 속성
[StringLength(100, ErrorMessage = "Must be less than 100 Chars", MinimumLength = 3)]
public List<KeyValuePair<int, string>> Authors { get; set; }
?
전혀 가능합니까?
에서 공개 목록
가 어떻게 DataAnnotation 유효성 검사와 위의 목록에 각 문자열의 유효성을 검사 할 수 이 MVC3에서 속성
[StringLength(100, ErrorMessage = "Must be less than 100 Chars", MinimumLength = 3)]
public List<KeyValuePair<int, string>> Authors { get; set; }
?
전혀 가능합니까?
구조에 사용자 정의 유효성 검사!
IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
IValidatableObject
인터페이스이있는 코드
있다고 결정하는 로직을 구현 : 다음을 수행해야합니다public class YourModel : IValidatableObject
{
public List<KeyValuePair<int, string>> Authors { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
foreach(KeyValuePair<int, string> myKvp in Authors)
{
if(myKvp.Value.Length >= 100)
{
yield return new ValidationResult("Must be less than 100 characters");
}
}
}
}
그런 식으로에 전화 할 수 있습니다. 컨트롤러 작업에을 입력하고보고 된 오류를 반환하십시오. 당신의 KeyValuePair
항목이 특정 개체를 참조하는 경우에도 같은 작업을 수행 할 수 있습니다
yield return new ValidationResult("Must be less than 100 characters", new string[] { myKvp.Key.ToString() });
당신은 당신의 페이지에있는 속성의 ID에 맞게 그것을 조정할 필요 했어. 이렇게하면 오류 메시지가 페이지의 입력과 관련 될 수 있습니다.
내 개체의 상태에 따라 유효성 검사를 수행하는 경우가 많기 때문에 IValidatableObject
을 여러 위치에서 덮어 씁니다. 귀하의 사례는 조금 다르지만 위의 예에서 볼 수 있듯이 확실히 할 수 있습니다. (그러나 내 머리 꼭대기에서 벗어난 모든 것이 완벽하지 않을 수 있습니다!)