2012-03-22 73 views
0

我有以下ViewModel,它是繼承它的其他ViewModel的基類。我應該在哪裏放置映射我的ViewModel的方法?

將viewmdoel映射到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 2012-03-22 09:56:12

+0

visual studio中的類庫項目。在解決方案資源管理器中右鍵單擊解決方案文件並添加一個類庫。它與映射沒有任何關係,但具有良好的解決方案/應用程序結構 – jgauffin 2012-03-22 10:03:44

相關問題