0

我在 C# 和 Razor 中有一个 ASP.NET MVC3。应用程序的架构分为数据访问层(EF 类 + 存储库)、服务层、控制器、ViewModels 和 View。

我的ViewModel公开了一个方法,该方法Fill接受要在View中显示的数据集合作为参数。为了在组件之间不存在耦合,必须从服务层控制器Fill调用该方法?

4

2 回答 2

2

定义:模型(如在 MVC 中)= 服务层(在这种情况下)

控制器应该作为视图和模型之间的粘合剂。视图不应该知道模型,反之亦然。

因此,您的问题的答案是控制器应包含用于将信息从模型移动到视图模型的所有逻辑。在视图模型中使用模型中的任何类都很好。

更新以回复评论

就像我说的。我不知道你的类是什么样子或者你必须做什么来生成导航。

  1. 控制器应该用于组装视图模型所需的信息
  2. 控制器不应该有任何业务逻辑

这意味着您可能必须在服务层中创建新类才能实现这两个目标。

于 2012-02-17T12:18:57.637 回答
1

最好从 ViewModel 中删除 Fill 函数,然后 ViewModel 将不依赖于您的数据层。

然后,我会在控制器中使用 Automapper 之类的东西将 DataObject 映射到 ViewModel,然后再返回视图。

行动方法:

public ActionResult Edit(int id)
{
    var data = DataRepo.Get(id);
    var viewMode = Mapper.Map<ViewModel>(data);
    return View(viewModel);
}
于 2012-02-17T12:05:21.650 回答