1

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

4

1 回答 1

-1

我会建议:

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

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

  3. 标签(如果它们是新闻文章的一部分)应在操作内部处理。否则转到 2。

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

于 2013-05-31T10:07:17.697 回答