我正在学习MVC开发一个网站,我发现混淆了“理论”和当前广泛实现的(明显的)差异。MVC框架是否将视图与模板混淆?
在original和Martin Fowler's article中,MVC概念似乎赞成“智能”视图,该视图直接与模型交互以检索要显示的数据,并自行决定如何呈现数据。在网络上,这应该是输出格式(HTML,JSON,PDF等)。
另一方面,当前框架中的视图如ASP.NET和Zend似乎仅仅是一个HTML模板。
这对我提出了一个问题:我可以为每个格式的浏览,但后来我在这些框架应该在哪里决定什么视图显示?控制器应该决定加载哪个视图?但是,那么控制者有责任知道显示的格式吗?这似乎违背了理论。
使用MVC时您有什么经验,您需要输出不同的格式?
那么,通常实际上是请求对象决定的。您可以在控制器中获取请求对象,并根据参数将正确的对象/变量传递给视图。通常只有一个视图用于显示大量不同但相似的页面(如果HTML是80-90%相同,则冗余视图脚本没有意义,只需在视图脚本中使用简单的if/else等来决定做什么显示)。这就是大多数框架中的做法,不管理论上是否合理,我都不知道。 – 2010-11-04 10:10:02