2012-03-22 3 views
0

다음과 같은 ViewModel이 있습니다.이 ViewModel은 상속하는 다른 ViewModel의 기본 클래스입니다.내 ViewModel을 매핑하는 메소드는 어디에 배치해야합니까?

viewmodel을 자체 매핑하는 방법을 배치하는 것이 좋습니다.

이 같이

:

public class ShowQuestionViewModel 
    { 
     public ShowQuestionViewModel() 
     { 

     } 

     public int Question_ID { get; set; } 

     public Boolean Condition_Fullfilled; 

     public String requiredmessage = ""; 

     [Required(ErrorMessage = "Dette felt er påkrævet")] 
     public String Question_Wording { get; set; } 

     public String Question_Type { get; set; } 

     [Required(ErrorMessage = "Dette felt er påkrævet")] 
     //[Digits(ErrorMessage = "Feltet må kun indeholde heltal")] 
     public String Question_Number { get; set; } 

     public String Left_scale { get; set; } 
     public String Right_scale { get; set; } 
     public int Scale_Length { get; set; } 
     public String Left_Scale_HelpText { get; set; } 
     public String Right_Scale_HelpText { get; set; } 

     public Boolean Visible { get; set; } 
     public Boolean IsAnswered { get; set; } 
     public String Question_HelpText { get; set; } 
     public String Question_HelpText_PDF { get; set; } 
     public int Category_ID { get; set; } 

     // Ting der er behov for til Views 
     public SelectList Categories { get; set; } 
     public SelectList Visibility { get; set; } 
     public string RefUrl { get; set; } 

     public void MapQuestionToViewModel(MvcApplication3.Models.Question question) 
     { 
      Question_ID = question.question_id; 
      Category_ID = Convert.ToInt32(question.category_id); 
      Question_Number = question.question_number.ToString(); 
      Question_Wording = question.question_wording; 
      Visible = (bool)question.visible; 

      String hlptxt = question.help_text; 

      Question_HelpText = hlptxt; 

      Question_HelpText_PDF = question.help_text_pdf ?? ""; 

      Left_scale = question.left_scale; 
      Right_scale = question.right_scale; 
      Scale_Length = question.scale_length ?? 0; 

      Left_Scale_HelpText = question.left_scale_hlptxt; 
      Right_Scale_HelpText = question.right_scale_hlptxt; 

      Question_Type = question.Question_Type.type_description; 

      Categories = GetQuestions.GetCategories(question); 

      Visibility = GetQuestions.getVisibleSelectList(); 
     } 
} 

을 아니면이 다른 곳에 배치해야? 일부 디자인 가이드 라인

링크

답변

0

내가 대신

public ShowQuestionViewModel(MvcApplication3.Models.Question dbmodel) 

가 MvcApplication3.Models 네임 스페이스 뷰 모델과 아무것도를 포함해야 번째 생성자을 사용하실 수 있습니다. 대신 모든 비즈니스 로직을 클래스 라이브러리로 옮기는 것이 좋습니다.

매핑을 처리 할 필요가 없습니다. AutoMapper 또는 ValueInjecter와 같은 프레임 워크를 사용할 수 있습니다.

+0

클래스 라이브러리가 무엇을 의미하는지, 그리고이 코드를 사용하여이 클래스 라이브러리를 사용하여 ViewModel을 매핑하는 방법을 설명해 주시겠습니까? – Kenci

+0

Visual Studio의 클래스 라이브러리 프로젝트. 솔루션 탐색기에서 솔루션 파일을 마우스 오른쪽 버튼으로 클릭하고 클래스 라이브러리를 추가합니다. 매핑과는 아무런 관련이 없지만 좋은 솔루션/응용 프로그램 구조가 있습니다. – jgauffin

관련 문제