我正在构建一个MVC应用程序,并正在为一个类设计一个自定义模型绑定器;本质上,模型的一个字段是存在于数据库中的对象,但很难将其与HTML中的相应对象相关联。 (因为选择列表只允许我选择一个int / string字段,我真的不能将'对象'存储为选择列表的'值'。
我正在考虑使用存储在选择列表中的Id在我的Model Binder中查找我数据库中的对象 - 但是我的一位同事告诉我这通常是一个坏主意。这是真的,如果是的话,我还有其他选择吗?
答案 0 :(得分:7)
似乎是一个主观问题,但我认为在绑定器中调用存储库是可以接受的。我的备份是优秀的书MVC in Action 2。他们有一个关于模型粘合剂的简短部分。下面是引用,讨论在绑定器中调用数据库的想法(强调添加):
大多数时候,这个动作 参数是主键 对象或其他唯一标识符, 所以不要重复这个 我们所有行动中的数据访问代码, 我们可以使用自定义模型绑定器 可以加载之前存储的对象 行动已经执行。我们的行动可以 然后将持久化对象类型作为 参数而不是唯一的 标识符
如果您认为模型绑定器的整个点将视图映射到底层域模型,那么这是有意义的。他们的示例代码也演示了绑定器中的存储库调用。