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