我正在写一个MVC应用程序。需要打开同一页面的多个实例,每个实例从数据库访问不同的记录,这些记录对象也需要在最终更新之前通过页面流传递。
实现这一目标的最佳,最正确的方法是什么?应该/我可以创建一个自定义模型绑定器,通过它的唯一ID链接到对象,然后在会话中创建每个记录对象,随时更新它们通过每个页面的流程然后最终调用更新方法?或者有更好的方法来解决这个问题吗?
干杯
MH
答案 0 :(得分:2)
从技术上讲,这是可能的,但我不认为这是可取的。当您查看IModelBinder的签名时,如果您希望能够访问应用程序的其余上下文(例如如何根据ID对对象进行脱水),则必须跳过与ControllerContext相关的一些箍。
这是可能的,但是如此笨重,你应该考虑它是否是正确的方法。在我看来,ModelBinder的职责是将HTTP请求数据映射到强类型对象。没有更多,也没有更少 - 它完全是一个映射器,并试图让它做得更多将打破单一责任原则。
听起来我需要一个应用程序控制器 - 基本上是一个编排视图和基础模型状态的类。您可以在Patterns of Enterprise Application Architecture中阅读有关应用程序控制器设计模式的更多信息。
由于Web应用程序本质上是无状态的,因此您需要一个存储应用程序中间状态的位置。是否使用会话或自定义持久存储来执行此操作取决于应用程序的要求和中间数据的一般复杂性。