0
基本上在我的應用程序中,我開始看到一些沉重的視圖模型(以及在這些視圖模型中查看模型)。 因此,當我在我的控制器中實例化並填充它們時,控制器方法似乎變得非常厚(即使所有邏輯都在模型層中處理,並且控制器僅調用方法來檢索要插入視圖模型的數據)。在哪裏實例化和填充視圖模型?
哪裏會是實例化和填充我的視圖模型的最佳位置?
基本上在我的應用程序中,我開始看到一些沉重的視圖模型(以及在這些視圖模型中查看模型)。 因此,當我在我的控制器中實例化並填充它們時,控制器方法似乎變得非常厚(即使所有邏輯都在模型層中處理,並且控制器僅調用方法來檢索要插入視圖模型的數據)。在哪裏實例化和填充視圖模型?
哪裏會是實例化和填充我的視圖模型的最佳位置?
哪裏將實例化和填充我的視圖模型的最佳位置?
這將在您的應用程序的映射層。例如,如果你正在使用AutoMapper
控制器代碼可能是這樣的:
public ActionResult Index(int id)
{
DomainModel model = repository.Get(id);
ViewModel viewModel = Mapper.Map<DomainModel, ViewModel>(model);
return View(viewModel);
}
或自定義操作篩選它甚至可能進一步簡化爲:
[AutoMap(typeof(DomainModel), typeof(ViewModel))]
public ActionResult Index(int id)
{
DomainModel model = repository.Get(id);
return View(model);
}
當然,如果你不使用AutoMapper,但一些自定義代碼,這不是一個問題。您只需將一些映射界面注入控制器中,即可完成此項工作。
通常我會在控制器中實例化視圖模型,因爲它們唯一的真正目的是傳遞給視圖。您能否提供一個您認爲可以改進的代碼示例?也許你可以將控制器中發生的一些邏輯移動到視圖模型本身中? – David