Asp.net mvc 在MVC中加载辅助数据集的最佳位置是哪里?

Asp.net mvc 在MVC中加载辅助数据集的最佳位置是哪里?,asp.net-mvc,Asp.net Mvc,假设我有一个班级学生,一个学生有一个家庭教师。在我的“编辑学生”页面上,我想显示要从中选择的导师列表 要做到这一点,我将在某个时候需要点击学生库以获取当前学生和导师库以获取所有导师的列表。我正在使用依赖注入来获取我的repo实例 我有一个视图模型类,控制器在传递到视图进行渲染之前填充该类。我给了这个类一个IEnumerable,我可以在视图中使用它来呈现下拉列表 我的问题是:谁应该填写导师名单 控制器应该负责加载所有数据,还是应该让视图模型类加载它?我无法决定这是谁在担心 无论哪种方式,在有多个

假设我有一个班级学生,一个学生有一个家庭教师。在我的“编辑学生”页面上,我想显示要从中选择的导师列表

要做到这一点,我将在某个时候需要点击学生库以获取当前学生和导师库以获取所有导师的列表。我正在使用依赖注入来获取我的repo实例

我有一个视图模型类,控制器在传递到视图进行渲染之前填充该类。我给了这个类一个
IEnumerable
,我可以在视图中使用它来呈现下拉列表

我的问题是:谁应该填写导师名单

控制器应该负责加载所有数据,还是应该让视图模型类加载它?我无法决定这是谁在担心


无论哪种方式,在有多个辅助数据集的更复杂的场景中,其中一个类最终将使用批量或存储库注入contstructor。

我通常让控制器担心在将其发送到视图之前填充视图模型的各个部分。有时,您可能会在多个位置使用同一视图模型,但不一定仍希望填充其所有字段(在本例中,
IEnumerable

我认为这是有道理的——控制员的责任可以被视为:

  • 从其他地方(存储库)获取数据并将其打包为viewmodel
  • 将viewmodel传递给视图

在将视图发送到视图之前,我通常让控制器担心填充视图模型的各个部分。有时,您可能会在多个位置使用同一视图模型,但不一定仍希望填充其所有字段(在本例中,
IEnumerable

我认为这是有道理的——控制员的责任可以被视为:

  • 从其他地方(存储库)获取数据并将其打包为viewmodel
  • 将viewmodel传递给视图

这肯定是控制器的角色,因为您不希望viewmodel总是加载特定的导师列表

有趣的问题是,正如您所说,避免将几个IRepository实例注入构造函数,这是整个存储库模式的问题,有些人甚至建议使用存储库

我不知道情况是否如此,但我建议您仔细考虑如何构造数据访问对象,以避免盲目注入存储库的情况,因为这可能非常有害


我倾向于使用
IRepository
实例作为构建另一个存储库的基础,该存储库更接近于我的应用程序访问数据的方式。

这肯定是控制器的角色,因为您不希望您的viewmodel总是加载特定的导师列表

有趣的问题是,正如您所说,避免将几个IRepository实例注入构造函数,这是整个存储库模式的问题,有些人甚至建议使用存储库

我不知道情况是否如此,但我建议您仔细考虑如何构造数据访问对象,以避免盲目注入存储库的情况,因为这可能非常有害


我倾向于使用
IRepository
实例作为构建另一个存储库的基础,该存储库更接近于我的应用程序访问数据的方式。

您发布的一篇有趣的文章。谢谢。你发的一篇有趣的文章。谢谢