【发布时间】:2010-11-04 00:01:24
【问题描述】:
我正在学习 MVC 来开发网站,但我发现与“理论”和当前广泛实施的(明显?)差异感到困惑。
在original 和Martin Fowler's article 中,MVC 概念似乎更倾向于“智能”视图,它直接与模型交互以检索要显示的数据,并自行决定数据应如何呈现。在网络上,这应该是输出格式(HTML、JSON、PDF 等)。
另一方面,ASP.NET 和Zend 等当前框架中的视图似乎只不过是一个 HTML 模板。
这对我提出了一个问题:我可以为每种格式创建一个视图,但是我应该在这些框架中的什么位置决定要显示什么视图?控制器是否应该决定加载哪个视图?但是,控制器是否有责任知道正确的显示格式?这似乎与理论背道而驰。
您在使用 MVC 时是什么体验,需要输出不同的格式?
【问题讨论】:
-
嗯,通常实际上是由请求对象决定的。您在控制器中获取请求对象,并根据参数将正确的对象/变量传递给视图。最好只有一个视图来显示许多不同但相似的页面(如果 HTML 80-90% 相同,那么冗余视图脚本没有意义,只需在视图脚本中使用简单的 if/else 等来决定做什么展示)。大多数框架都是这样做的,理论上是否合理,我不知道。
标签: asp.net-mvc model-view-controller zend-framework