2011-11-09 4 views
0

저는 Organization이라는 모델이 있고 모델은 Model이라는 어셈블리에 저장됩니다. 조직을 삽입하고 조직을 업데이트해야한다는 요구 사항이 있습니다. 질문ASP.NET MVC 3보기 및 모델

커플 :

새로운 조직을 삽입, 나는 조직이 아직없는 그래서 일부 원격 유효성 검사를 삽입 한 존재하는지 확인하고 싶습니다. 그런 다음 모델을 삽입 뷰에 바인딩합니다.

이제 중복 뷰의 원격 뷰를 제거하는 뷰 모델을 사용해야합니까? 그렇다면 기본보기 조직 모델을 업데이트보기로 사용할 수 없으므로 삽입 및 업데이트를위한 두 가지보기를 만들어야합니까? 이 경우 기본적으로 동일한보기가 있지만 서로 다른 모델을 사용하게됩니다.

아무도 도와 줄 수 있습니까?

답변

0

이 특정 시나리오의 경우 동일한 이름을 가진 다른 조직이 없다는 유효성 검사가 삽입 및 업데이트의 경우에 모두 유효하므로 동일한보기 모델을 다시 사용할 수 있습니다.

조직을 업데이트 할 때 이름이 존재하지 않는지 확인하는 것은 사용자가 조직 이름을 변경하지 않으면 데이터베이스의 하나 이상의 레코드에 해당 이름, 업데이트되는 이름 및 유효성 검사가 있어야하므로 추가가 있어야합니다. 그 레코드를 무시하십시오.

따라서 뷰 모델을 다시 사용하도록 선택하면 유효성 검사는 작업의 컨텍스트 (삽입 또는 업데이트)에 따라 수행해야합니다.

+1

저는 도메인 모델 엔 뷰 모델을 사용하지 않는다고 생각합니다.내가보기 모델 만들기를 시작한 다음보기를 도메인 엔터티가 아닌보기 모델에 바인딩해야한다고 생각합니다. – Paul

+0

일반적으로 뷰 모델은 뷰가 실제로 필요로하는 것과 맞출 수 있으므로 꼭 사용해야하지만 필수는 아닙니다. 소프트웨어 개발의 거의 모든 부분이 유스 케이스에 달려있다. –

0
  • 질문 1 : 유효성을 확인 :

유효하지 않은 무언가가있는 경우는,이 ​​작업을 수행 :

If(isNotValid()){ 
    ModelState.AddModelError("Key", "The user name or password provided is incorrect.") 
} 

키가 올바르지 않습니다보기에서 필드입니다.

  • 질문 2 : 차이 생성/편집

당신의 업데이트에, 그들은 여전히 ​​"조직 이름"을 변경할 수 있기 때문에이 같은 뷰 모델을 사용해야하고 고유 한 경우 당신은 여전히 ​​확인해야 .

하지만 왜 검증을 확인하기 위해 ViewModel을 사용해야합니까? 컨트롤러의 고유성에 대한 조직 이름을 검사 할 수없고 고유하지 않은 경우 ModelState.AddModelError를 수행 할 수없는 이유가 있습니까? 당신이 페이지를 확장해야 할 때 위 내가 모든 조직, 직원 및 할당을 보여 가상 DashBoardViewModel 것

public class DashBoardViewModel 
    { public List(Of Organisation) Organisation {get;set;} 
    public List(Of Staff) Staff{get;set;} 
    public List(Of Assignment) Assignments{get;set;} 
    } 

를 들어

뷰 모델이다. ViewModel에는 하나의 유형의 개체 만 포함되어 있지 않으며 여러 개의 개체가 포함되어 있습니다.

때때로 View에 데이터를 추가해야 할 때 ViewModel을 만드는 대신 ViewData 또는 ViewBag 만 사용할 수 있습니다.