2013-07-07 38 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,但一些自定义代码,这不是一个问题。您只需将一些映射界面注入控制器中,即可完成此项工作。

相关问题