在哪里实例化和填充视图模型?

时间:2013-07-07 15:12:32

标签: asp.net-mvc asp.net-mvc-4

基本上在我的应用程序中,我开始得到一些重视图模型(并在这些视图模型中查看模型)。 因此,当我在控制器中实例化并填充它们时,控制器方法似乎变得非常厚(即使所有逻辑都在模型层中处理,控制器只调用方法来检索数据以插入到视图模型中)。

哪里是实例化和填充我的视图模型的最佳位置?

1 个答案:

答案 0 :(得分: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而是使用一些自定义代码,那不是问题。您只需在控制器中注入一些映射接口即可完成这项工作。