2011-08-29 5 views
2

뷰에 유효하지 않은 데이터가 있음을 컨트롤러에보고 할 책임이있는 잘못된 데이터가 포함되어있는 경우? [지속하기 전에]. 예를 들어GUI 및 데이터 유효성 검사 [MVC]

는 :

Model: 
    Name [must not be empty, and at least X characters] 
    Age [must be an integer, greater than 0] 
View: 
    Text box for the name [with some kind of indicator of being invalid] 
    Text box for the age [with some kind of indicator of being invalid] 

제어기는 데이터 입력이 완료되었음을 통지 할 때. [From the view] 컨트롤러가 데이터가 유효하지 않다는 것을 알리는 책임이있는 클래스는 무엇입니까? [사용자가 이름을 입력하지 않고 나이가 아닌 숫자를 입력한다고 가정 해 봅시다.] 데이터와 컨텍스트를 직접 담당하기 때문에 모델의 책임임을 알 수 있습니다. 그러나 처음부터 유효하지 않은 데이터를 입력 할 수 있으므로보기의 책임이 무엇 인지도 알 수 있습니다.

답변

2

컨트롤러는 MVC 트라이어드에서 "로직"을 담당하고 데이터 유효 여부를 결정하는 것은 확실히 "로직"이므로 컨트롤러가 실제로 데이터의 유효 여부를 결정해야합니다. 즉, 모델이이 결정에 다소 참여하는 경우는 드뭅니다 (예 : 멤버의 유효성 검사 속성 또는 유효성 검사 도우미 인터페이스의 구현을 통해).

보기에는 중요한 논리가 포함되어서는 안되기 때문에 데이터가 유효한지 여부를 결정할 때보기가 전혀 참여하지 않아야합니다. 보기에는 모델 및/또는 부품의 유효성에 대한 정보가 표시 될 수 있지만 (예 : 텍스트 상자 옆에있는 '잘못된 값'표시기),이 정보를 표시하는 결정은 컨트롤러가 최종적으로 결정해야합니다.

+0

내가 뭘 의심했는지. 이 모델은 실제로 들어오는 데이터를 정말로 신경 쓰는 유일한 모델입니다. 그러나보기가 일종의 취급을하고 잘못된 입력을 필터링합니다. [데이터가 텍스트 상자를 설정 한 숫자 | 암호 | 기타 형식 인 경우] – monksy

0

보기가 모델에 입력이 유효한 지 여부를 묻는 메시지가 표시됩니다. 결국 데이터를 제어하는 ​​모델이됩니다.