欢迎,
我正在为自己的用法编写简单的Mvc框架,我遇到了这个问题。在我的框架中,我根据输出文档类型区分不同类型的视图。例如,我有htmlViewNews和xmlViewNews
XML类型的视图只显示新闻列表作为XML文档。但HTML类型的视图除了显示新闻列表外,还应显示菜单,标签列表以及需要从模型中获取数据的许多不同内容。
我认为根据控制器中的视图类型执行操作是一个坏主意,因为它不是oop方式
但从视图直接访问模型是否可以?我想到了类似的东西:为所有类型的视图制作装饰器。防爆。 htmlViewFrame和xmlViewFrame可以直接访问模型,这些模型可以显示菜单等所有内容。
其他但类似的解决方案是为htmlViewNews制作htmlViewFrame基类
从mvc的角度来看是否可以?
第三种解决方案,可能是最好的,但也是最复杂的,是从视图发送有关菜单数据的信号。接收信号的主控制器将运行子控制器,该子控制器将访问模型并将数据发送回查看。但这样的事情是否值得复杂呢?
抱歉我的英语不好。
答案 0 :(得分:-1)
我建议:
保留一个标志(例如URL部分,会话变量,cookie),告诉控制器/动作绘制哪个视图(html,xml,json等)。我假设您有行动可以决定绘制哪个视图。
应从较高的装饰器模式实体处理菜单。也许是“布局”或“MenuController”。
如果标签属于新闻文章的一部分,则应在操作内部进行处理。否则GOTO 2。
不允许视图直接访问模型:)