2013-07-07 76 views
0

基本上在我的應用程序中,我開始看到一些沉重的視圖模型(以及在這些視圖模型中查看模型)。 因此,當我在我的控制器中實例化並填充它們時,控制器方法似乎變得非常厚(即使所有邏輯都在模型層中處理,並且控制器僅調用方法來檢索要插入視圖模型的數據)。在哪裏實例化和填充視圖模型?

哪裏會是實例化和填充我的視圖模型的最佳位置?

+0

通常我會在控制器中實例化視圖模型,因爲它們唯一的真正目的是傳遞給視圖。您能否提供一個您認爲可以改進的代碼示例?也許你可以將控制器中發生的一些邏輯移動到視圖模型本身中? – David

回答

1

哪裏將實例化和填充我的視圖模型的最佳位置?

這將在您的應用程序的映射層。例如,如果你正在使用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,但一些自定義代碼,這不是一個問題。您只需將一些映射界面注入控制器中,即可完成此項工作。

相關問題