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

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

问题描述:

通常在MVC模式中,当用户点击页面时,请求将被发送,然后控制器将处理请求,然后使用模型处理它并将其路由到适当的视图。视图和模型之间是否存在依赖关系?

我已阅读关于被动模型和主动模型的帖子,但是有没有可能将视图直接与模型交互,是双向关系(即模型< - >视图)定向(即模型 - >视图)。

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

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

+0

+1捕获ASP.NET MVC的本质风味。 – 2009-08-16 17:12:09

+0

但是视图和模型之间是否存在任何交互,我可以看到的是控制器处理请求,使用模型的进程以及生成视图的动作取决于操作,所以循环是: C-> M-> C-> V(C-Controller,M-Model,V-View),是否有任何实例可以像M-> V – kurozakura 2009-08-16 18:12:14

+0

控制器可以将模型或视图模型传递回视图。视图可以直接访问它,但只能读取模型中的值。这将是支持实际上并没有持续的视图模型的一个论据。模型本身通常不会包含任何特定于视图的数据,但实际上我有时会将标记插入到我的视图模型中 - 比如说其中一列应包含链接的网格模型。 – tvanfosson 2009-08-16 18:29:30

在的Java Swing MVC实现为视图和控制器相结合,以期既可以从模式和寄存器从中事件,有效地使它们松散地互相依赖的读取。

通常Web应用程序不这样做,因为真正的视图显示在客户端上,可以不容易接收到来自模型事件,所以在这些情况下的关系,唯一无二的一种方式。只要模型不直接依赖和查看类,在模型和视图之间建立关系当然不是一件坏事。在这种情况下,将会建立一个依赖周期并危害维护,尤其是测试。

例如,这是在Swing实现的方法是通过一个监听器接口,其中所述视图可以然后实现/提供的该模型的实现。

我总是看到视图作为呈现模型的方式。根据这个观点,View是Model aware,并且在ASP.NET MVC中,您应该从ViewPage继承页面以避免滥用ViewData或castings。

考虑到这一点,该模型是不查看知道并仅仅是从视图用于将数据呈现给用户的对象。

最后,你可以分享不同的观点相同的模型,例如XML输出可以共享相同的模型作为HTML输出,但观点是非常不同的。

周期是多还是少,控制器生成模型,其传递给查看,显示德模型的情况下,有相互作用,讯息输入到控制器和循环再次开始。