MVC中关于header的问题
Posted
技术标签:
【中文标题】MVC中关于header的问题【英文标题】:questions on header in MVC 【发布时间】:2012-06-18 08:22:14 【问题描述】:在 MVC 框架中,负责定义标头的是控制器还是视图?
想象一下下载文件的情况,会有渲染内容,所以我想控制器会设置适当的标题来下载,对吗?
另一点是我对哑剧有疑问...
默认情况下我们使用text / html; charset = UTF-8,
另一个是设置要下载的文件的mime类型,这样对吗?
【问题讨论】:
【参考方案1】:所有的表示逻辑都是视图实例的责任。即使您使用 MVP 模式,这也适用,其中视图是被动实体视图(“被动”并不意味着“愚蠢”或“只是模板”)。
Controller 应该只负责改变模型层和当前视图的状态。
【讨论】:
如果我有下载请求,我只有设置标题类型的视图? 是的。它向模型层询问文件详细信息,并根据响应生成错误页面或启动下载。 所以要完成这个问题......然后渲染一个完整的页面,使用“text / html”和其余的 mime 用于下载,对吗?奥布里加多 @PapaCharlie,在某些情况下,您还会发送重定向标头,或者可能是 json 响应的 mime 类型。【参考方案2】:-
正确,控制器应该“决定”哪个是合适的标头
Content-type 是您要更改的标头。
【讨论】:
控制器的职责是处理输入,而不是决定输出 @Gordon :我通常(默默地)同意你的观点,但在这里,我认为这是错误的。以 j2ee 为例。控制器负责“请求”和“响应”。它不控制视图 inside 的内容,但它控制 what 的输出(主要是标题)。在很多 php 框架中也是如此(例如 symfony) 你说它控制应用程序,并且是一个请求并设置状态200(ok)或404(未找到)。在这种情况下,他会收到内容并发送视图进行渲染,对吗? @Shikiryu 是和否。确实,让控制器在 基于 Web 的 MVC 框架中创建响应是常见的做法。虽然这是一个实现细节。 MVC 中没有协议或传递机制的概念。它只是说“将用户交互分为三个不同的角色”(至少如果您遵循 POEAA 定义)。所以根据定义,HTTP Request 和 HTTP Response 不是 MVC 问题域的一部分。 @Gordon 我同意这一点。在适用时遵循定义和规范很好)。但我们正在开发网络应用程序。如果定义没有考虑到您的需要,您需要自己做。这就是所有基于 Web 的“MVC”所做的。即使没有它们,我们也需要考虑请求和响应。就个人而言,我习惯于管理控制器中的标题(或通过控制器,例如$this->view->setHeader()
。您更改了视图但 in 控制器),我仍然认为它是合乎逻辑的。以上是关于MVC中关于header的问题的主要内容,如果未能解决你的问题,请参考以下文章
.NET MVC中关于ScriptBundle导致jquery 模态框未正常执行的问题
C#中关于DataGridView行和列的背景色-前景色设置
asp.net mvc 中关于验证问题data-val-number="The field 部门号 must be a number