2010-12-17 10 views
2

私のカスタムビューテンプレート用にviewmodelクラスを作成しました。今は、Controllerクラスのデータベース保存メソッドを呼び出しています。今、私はこのロジックをRepositoryクラスに移したいと思います。私のリポジトリクラスのviewModelプロパティにどのようにアクセスできますか?私は入力を感謝します。ありがとうございました。viewmodelクラスをリポジトリクラスに渡す方法

ここに私のコードです。

のViewModel

public SelectList StatusList { get; set; } 
    [Required(ErrorMessage = "* Required")] 
    public string Status { get; set; } 

    [Required] 
    public DateTime? StartDate { get; set; } 

マイContollerクラス:

[HttpPost] 
    public ActionResult Create(CreateViewModel viewModel) 
    { 
     if (ModelState.IsValid) 
     { 
      // go and save your view model data 
      using (var adapter = new DataAccessAdapter()) 
      { 
        TestEntity test1 = new TestEntity(); 
        test1.statusId = Convert.ToInt32(viewModel.Status); 
        adapter.SaveEntity(test1); 

        TestEntity1 test2 = new TestEntity2(); 
        test2.mId = test1.mId; 
        test2.startDate = viewModel.startDate; 
        adapter.SaveEntity(test2); 
      } 
     } 

}

答えて

3

あなたのリポジトリにあなたのビューモデルのプロパティにアクセスしたくない、あなたは、ビューモデルをマップしますプロパティをエンティティクラスに戻し、エンティティをリポジトリに渡します。エンティティは、MVCアプリケーションとデータライブラリの両方に知られているライブラリに存在する必要があります。

public class TestController 
{ 
    public ITestRepository _repository; 

    public TestController(ITestRepository repository) 
    { 
    _repository = repository; 
    } 

    public ActionResult Create(CreateViewModel viewModel) 
    { 
    var entity = new TestEntity() 
     { statusId = Int32.Parse(viewModel.Status) }; 
    var entity2 = new TestEntity2() 
     { mId = entity.mId, 
     startDate = viewModel.startDate }; 

    _repository.SaveEntity(entity); 
    _repository.SaveEntity2(entity2); 
    } 
} 
+0

ありがとうございました。 – nav100

+0

1つの質問。私の場合、TestEntity()とTestEntity2()はデータベーステーブルです。 .saveメソッドを呼び出すことで直接保存できます。リポジトリクラスが必要なのはなぜですか?私は混乱しています。 – nav100

+0

コントローラクラスのデータベースクラスを参照する必要がありますか? – nav100

関連する問題