2009-05-03 129 views
7

在我见过的所有MVC Diagrams中,视图和模型之间始终存在连接,表明视图可以访问模型。ASP.net MVC - 视图如何访问模型?

我只是想知道:这适用于什么时候?目前,我有我的Controller Action从QueryString中获取参数,查询Model以获取MyObjectViewData,然后返回一个View,传入MyObjectViewData。所以基本上我有两者之间的控制器。

这似乎是合乎逻辑的方法,但它不符合模型和视图业务一起的假设。

什么是他们没有控制器交互的典型情况?

回答

6

在MVC中(在Web上),View通过呈现Model实体的特定实例直接与模型进行交互。它仅通过控制器间接作用于模型。在非web实现中,您可以使用观察者模式向处理程序注册View元素,这些元素可能会调用模型中用于更新模型而无需Controller交互的方法。 ASP.NET MVC和其他基于Web的实现比非Web实现更松散耦合。在我看来,这是一件好事。它倾向于使控制器实现更加丰富,并且您需要小心以保持Controller与Model之间的关注点分离。

Web实现可能应该在没有从Model到View的间接连接的情况下绘制,因为如果没有Controller,那么您无法在两者之间进行真正的通信。我想有人可能会争辩说一个Web服务可以提供这种连接,但我认为它只是Controller的另一种形式。