2012-03-22 13 views
0

私は次の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(); 
     } 
} 

か、どこか別の場所に配置する必要があります:このように

?いくつかの設計ガイドラインに

リンクは、私はMvcApplication3.Models名前空間は、ビューモデルと他には何が含まれている必要があります代わりに

public ShowQuestionViewModel(MvcApplication3.Models.Question dbmodel) 

二コンストラクタを使用します歓迎

答えて

0

です。代わりにすべてのビジネスロジックをクラスライブラリに移動することをお勧めします。

マッピングの処理も不要です。 AutoMapperやValueInjecterのようなフレームワークを使うことができます。

+0

クラスライブラリが意味することの例と、このクラスライブラリを使用してViewModelをマッピングする方法を、上記のコードで教えてください。 – Kenci

+0

ビジュアルスタジオのクラスライブラリプロジェクト。ソリューションエクスプローラでソリューションファイルを右クリックし、クラスライブラリを追加します。マッピングには何もありませんが、優れたソリューション/アプリケーション構造 – jgauffin

関連する問題