如何查看访问模型以获取特定输出文档类型的数据


How can view access model to get data for specific output document type?

欢迎,
我正在为自己的使用编写简单的Mvc框架,我遇到了这个问题。在我的框架中,我根据输出文档类型来区分不同类型的视图。例如,我有htmlViewNews和xmlViewNews
XML类型的视图只是将新闻列表显示为XML文档。但HTML类型的视图除了显示新闻列表外,还应该显示菜单、标签列表和许多需要从模型中获取数据的不同内容
我认为根据控制器中视图的类型执行操作是个坏主意,因为这不是oop方式
但是直接从视图访问模型可以吗?我想到了这样的想法:为所有类型的视图制作decorator。例如,htmlViewFrame和xmlViewFrame可以直接访问显示菜单等所有内容的模型。另一个类似的解决方案是为htmlViewNews创建htmlViewFrame基类
从mvc的角度来看可以吗
第三种解决方案,可能是最好但最复杂的,是从视图中发送信号,表示需要菜单数据。接收到信号的主控制器将运行子控制器,子控制器将访问模型并将数据发送回视图。但是,把事情复杂化值得吗
抱歉我英语不好。

我建议:

  1. 保留一个标志(例如URL部分、会话变量、cookie(,告诉控制器/操作要绘制哪个视图(html、xml、json等(。我假设你有可以决定画哪个视图的动作。

  2. 菜单应该从更高的装饰器模式实体处理。也许是"布局"或"菜单控制器"。

  3. 如果标签是新闻文章的一部分,则应该在操作中进行处理。否则GOTO 2。

  4. 不允许视图直接访问模型:(