视图和模型之间是否存在依赖关系?

时间:2009-08-16 16:58:07

标签: asp.net-mvc model-view-controller model

通常在MVC模式中,当用户点击页面时会发送请求,然后控制器将处理请求,然后使用模型处理它并将其路由到适当的视图。

我已阅读有关被动模型和活动模型的帖子,但是有可能视图直接与模型交互,这将是双向关系(即模型< - > View)或者 - 方向性(即模型 - >视图)。

在模型和视图之间建立关系是否合适?那么在ASP.NET MVC项目中,我应该在模型和视图之间建立关系,还是让它独立于模型?

3 个答案:

答案 0 :(得分:2)

我认为将您的观点视为特定于模型,即强类型,几乎总是更可取。在模型共享相关数据的情况下,您可以重用特定于该数据子集的部分视图。在ASP.NET MVC中,您的模型是 - 或者应该 - 忽略视图,因为它们只能通过Web请求进行交互,这是一个控制器功能。不,你可以说你可以通过网络服务进行互动,但我认为这些只是另一种控制器的风格。实际上,使用MVC,我发现很少需要使用基于REST的控制器操作来开发单独的Web服务。

答案 1 :(得分:1)

我总是将View视为展示模型的方式。根据这种观点,View是模型识别的,并且在ASP.NET MVC中,您应该从ViewPage继承页面以避免滥用ViewData或castings。

考虑到这一点,模型不是视图可识别的,只是从视图中使用的对象,用于向用户显示数据。

最后,您可以从不同的视图共享相同的模型,例如,XML输出可以与HTML输出共享相同的模型,但视图可能非常不同。

循环或多或少,Controller生成Model,将其传递给View,显示de Model,如果有交互,则将输入发布到Controller,循环再次开始。

答案 2 :(得分:0)

在Java Swing中,MVC实现为视图和控制器的组合,其中View既可以从模型中读取,也可以从模型中注册事件,从而有效地使它们相互依赖。

通常Web应用程序不这样做,因为真实视图在客户端上呈现,并且不能轻易地从模型接收事件,因此在这些情况下,关系只有一种方式。只要模型不直接依赖于和查看类,在模型和视图之间建立关系肯定不是一件坏事。在这种情况下,将建立一个依赖循环,这会损害维护,尤其是测试。

例如,在Swing中实现这一点的方法是通过一个Listener接口,然后视图可以实现/提供模型的实现。