在 MVC 的一些经典描述中,模型通过观察者模式通知视图。在我看来,这不会发生在 ASP.NET MVC 中,因此模型、视图和控制器之间的基本关系之一缺失了。
是这样吗?如果是这样,为什么?
在 MVC 的一些经典描述中,模型通过观察者模式通知视图。在我看来,这不会发生在 ASP.NET MVC 中,因此模型、视图和控制器之间的基本关系之一缺失了。
是这样吗?如果是这样,为什么?
ASP.NET MVC 中的视图是无状态的。它们存在很短的时间,然后被发送到客户端。
这个过程是这样的:
请求进入控制器。
控制器检索模型并实例化视图(将模型传递给它)。
视图被渲染,标记返回给客户端,然后被处理掉。
因此,由于视图在发送到客户端后不再存在......没有任何关于模型更改的通知。
不需要观察者模式。在 View 的原始定义中它说:
视图附加到其模型(或模型部分),并通过提问从模型中获取演示所需的数据。
在 Web 应用程序的上下文中,唯一可能的视图是浏览器呈现的标记 (HTML/XML)。因此,与在 ASP.NET MVC 中一样,视图代码被交给了一个模型实例,它可以访问该实例以向用户提供信息。