2012-03-22 77 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

相关问题