2014-03-05 7 views
5

ASP.NET MVC에는 ModelErrorCollection이 포함 된 ModelState 클래스가 있습니다. ModelError는 모델 바인딩 중에 발생하는 오류를 나타냅니다.ModelError와 ValidationResult의 차이점은 무엇입니까?

ValidationResult은 ValidationAttribute.IsValid 메서드에서 반환되며 현재 유효성 검사 특성에 대해 지정된 값의 유효성을 검사합니다. 맞춤형 모델 유효성 검사 특성을 작성하기 위해 validationAttribute를 상속하고 IsValid()를 재정의 할 수 있음을 알고 있습니다. 에 ValidationResult를 사용 http://www.asp.net/mvc/tutorials/older-versions/models-(data)/performing-simple-validation-cs

예 : ModelState를 사용

http://www.codeproject.com/Articles/260177/Custom-Validation-Attribute-in-ASP-NET-MVC

방법이 두 가지 일을? 아니면 함께 일하지 않겠습니까? 교차점은 무엇입니까? 이 질문은 ASP.NET MVC 유효성 검사 접근법을 더 잘 이해하려고합니다.

왜 데이터 주석을 사용하지 않는 이유가 무엇입니까? 대답은 ASP.NET MVC의 동적 필드에 대한 유효성 검사를 더 잘 이해하고 싶습니다. 필자의 제품 컨텍스트에서는 validationAttributes를 첨부 할 수있는 미리 정의 된 속성 모델이 없습니다.

답변

1

저는 ASP.NET MVC를 처음 사용합니다. 2에 대한 나의 이해에서 당신은 언급했습니다.

에 ValidationResult은 우리에게 정의 간단하여 속성 방법에 링크 된 우리의 오류 메시지가 Validate 방법을 정의하는 각 모델을 IValidatableObject를 구현하고 얻을 수있는 기능을 제공합니다. 내 관점에서 볼 때 ValidationResult는 모델 유효성 검사의 조건과 결과를 구성하는 데 사용되는 기능과 비슷합니다.

ModelState 우리에게 ModelState.AddModelError(memberName, validationResult.ErrorMessage)

을 수행하여 그리고 모든 ValidationResult와 ModelState의 조합으로 ModelState의 일부로에 ValidationResult에서 우리의 사용자 지정 오류를 만들 수있는 가능성을 제공, 우리는 여전히 이미 내부 동작을하는 동안 우리의 컨트롤러에 if (ModelState.IsValid)를 사용 할 수 있습니다 사용자 지정 오류 메시지 및 유효성 검사 조건이 포함되어 있습니다.

Patrick이 MVC의 유효성 확인과 관련된 자세한 기사를 게시했습니다. here