2010-12-17 26 views
2

我已經爲我的自定義視圖模板創建了一個viewmodel類。現在我正在調用Controller類中的數據庫保存方法。現在我想將這個邏輯移動到Repository類。我如何在我的存儲庫類中訪問我的viewModel特性?我很感激任何意見。謝謝。如何將viewmodel類傳遞到存儲庫類

這是我的代碼。

視圖模型

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

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

我位指示類:

[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 2010-12-17 19:48:43

+0

有一個問題。在我的情況下,TestEntity()和TestEntity2()是數據庫表。我可以通過調用.save方法直接保存。爲什麼我需要Repository類?我很困惑。 – nav100 2010-12-17 19:59:40

+0

我是否必須在Controller類中引用我的數據庫類? – nav100 2010-12-17 20:08:17

相關問題