【问题标题】:ASP.net MVC - how does the view access the model?ASP.net MVC - 视图如何访问模型?
【发布时间】:2009-05-03 12:25:41
【问题描述】:
在我见过的所有 MVC Diagrams 中,View 和 Model 之间总是存在连接,表明 View 可以访问 Model。
我只是想知道:这适用于什么时候?目前,我的控制器操作从 QueryString 中获取一个参数,查询模型以获取 MyObjectViewData,然后返回一个视图,传入 MyObjectViewData。所以基本上我在两者之间有控制器。
这似乎是合乎逻辑的方法,但它不符合 Model 和 View 一起做生意的假设。
在没有控制器的情况下它们交互的典型情况是什么?
【问题讨论】:
标签:
asp.net-mvc
model-view-controller
【解决方案1】:
在 MVC(在 Web 上)中,视图通过渲染模型实体的特定实例直接与模型交互。它仅通过控制器间接作用于模型。在非 Web 实现中,您可以使用观察者模式向 View 元素注册处理程序,这些处理程序可以调用模型中的方法来更新模型而无需控制器交互。 ASP.NET MVC 和其他基于 Web 的实现比非 Web 实现更松散耦合。在我看来,这是一件好事。它确实倾向于使控制器实现更胖,您需要小心保持控制器和模型之间的关注点分离。
Web 实现可能应该在没有从模型到视图的间接连接的情况下绘制,因为如果没有控制器,您就无法真正在两者之间进行通信。我想有人可能会争辩说 Web 服务可以提供这种连接,但我认为它只是控制器的另一种形式。