답변

6

새로운 질문을 시작하고 싶지 않기 때문에 토론에 늦게 입장하십시오. 내가 어디에서 왔는지는 중형 ASP.NET MVC 프로젝트에 적용 할 수있는 최상의 방법을 결정하는 것입니다.

내가 먼저 우리의 옵션을 요약 해 보자 : -

1) IDataErrorInfo 구현하기 간단합니다. 필요한 것은 Model 클래스에서 IDataErrorInfo를 파생시키는 것입니다. 캐치 (catch)는 모델 바인딩이 비즈니스 규칙을 적용하도록 허용한다는 것입니다. 비즈니스 규칙은 모델에 의해 시행되어야합니다. IDataErrorInfo에 대한 또 다른 catch (DataAnnotations의 경우와 마찬가지로)는 Steven Sanderson's book에서 하나의 속성 또는 whle 객체 모델과 관련된 여러 개의 오류와 관련된 여러 오류를보고 할 수 없었습니다.

2) DataAnnotation은 다음과 같습니다. 스키마 검사 (유효성 검사). 이는 응용 프로그램이 수행해야하는 첫 번째 검사입니다. 그러나 (IMHO), 비즈니스 규칙을 구현하는 데는 적합하지 않습니다.

3) 사용자 고유의 ModelBinder를 구현하십시오. 이 작업을 수행 할 수는 있지만 심각하게 말하면 ModelBinder를 사용하면 데이터를 모델로 구문 분석하고 바인딩하여 복잡한 검증과 비즈니스 규칙 검사를 수행하지 않아도됩니다. 귀하의 모델/도메인 계층에서 비즈니스 규칙 검사를 구현하도록 남겨 두었습니다.

4) 서비스 레이어를 사용하여 유효성 검사 (예 : this 참조) 표시된 예는 인터페이스 클래스를 사용하여 컨트롤러 및 모델 상태에서 분리하는 장점이 있습니다. 다른 옵션은 모델 레이어에서 적절한 예외를 throw하는 것입니다 후자의 옵션은 별도의 응용 프로그램 (예 : WCF 응용 프로그램)에서 서비스 계층을 구현할 때 유용합니다. (예 : WCF 응용 프로그램)

중간 규모 프로젝트의 경우 위 옵션 중 어느 것을 사용했는지 입양 예정) 이유는 무엇입니까?

환호

+0

1 점에서, 나는 INotifyDataErrorInfo가 .Net 4.5에서 지원 될 것이고 하나의 속성에 대해 여러 개의 오류를 처리한다고 생각합니다. –

5

DataAnnotations가 MVC 2.0에서 공식 지원을받는 것처럼 보입니다. Scott Guthrie는 DataAnnotations를 사용하여 2.0에서 모델 유효성 검사를 수행 할 때 good article을 게시했습니다. 팀이이 방향으로 가고있는 것을 감안할 때, 당신은 그 찬성 투표를 고려할 것입니다.

4

DataAnnotation은 구현하기 쉽고 MVC 2.0에서 직접 지원됩니다.

그러나 IDataErrorInfo을 사용하면보다 복잡한 유효성 검사 (예 : 여러 속성을 생성하는 유효성 검사 등)를 수행 할 수 있습니다.

두 개를 혼합하여 사용할 수 있습니다. 두 기술을 모두 구현하는 것을 막을 수있는 방법은 없습니다.

+0

이것은 또한 가능합니다. IValidatableObject 인터페이스를 사용하여 ComponentModel.DataAnnotations와 블러 처리하십시오. 이 인터페이스를 사용하면 여러 속성을 생성하는 유효성 검사를 수행 할 수도 있습니다. –