基本上在我的应用程序中,我开始获得一些重型视图模型(以及这些视图模型中的视图模型)。因此,当我在我的控制器中实例化并填充它们时,控制器方法似乎变得很厚(即使所有逻辑都在模型层中处理并且控制器只调用方法来检索数据以插入到视图模型中)。
哪里是实例化和填充我的视图模型的最佳位置?
基本上在我的应用程序中,我开始获得一些重型视图模型(以及这些视图模型中的视图模型)。因此,当我在我的控制器中实例化并填充它们时,控制器方法似乎变得很厚(即使所有逻辑都在模型层中处理并且控制器只调用方法来检索数据以插入到视图模型中)。
哪里是实例化和填充我的视图模型的最佳位置?
哪里是实例化和填充我的视图模型的最佳位置?
那将在您的应用程序的映射层中。例如,如果您使用的是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 而是使用一些自定义代码,那不是问题。您只需将一些映射接口注入到您的控制器中即可完成这项工作。