Model Binder可以进行存储库查找吗?

时间:2010-11-11 21:27:50

标签: asp.net-mvc modelbinders

我正在构建一个MVC应用程序,并正在为一个类设计一个自定义模型绑定器;本质上,模型的一个字段是存在于数据库中的对象,但很难将其与HTML中的相应对象相关联。 (因为选择列表只允许我选择一个int / string字段,我真的不能将'对象'存储为选择列表的'值'。

我正在考虑使用存储在选择列表中的Id在我的Model Binder中查找我数据库中的对象 - 但是我的一位同事告诉我这通常是一个坏主意。这是真的,如果是的话,我还有其他选择吗?

1 个答案:

答案 0 :(得分:7)

似乎是一个主观问题,但我认为在绑定器中调用存储库是可以接受的。我的备份是优秀的书MVC in Action 2。他们有一个关于模型粘合剂的简短部分。下面是引用,讨论在绑定器中调用数据库的想法(强调添加):

  

大多数时候,这个动作   参数是主键   对象或其他唯一标识符,   所以不要重复这个   我们所有行动中的数据访问代码,   我们可以使用自定义模型绑定器   可以加载之前存储的对象   行动已经执行。我们的行动可以   然后将持久化对象类型作为   参数而不是唯一的   标识符

如果您认为模型绑定器的整个点将视图映射到底层域模型,那么这是有意义的。他们的示例代码也演示了绑定器中的存储库调用。