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行和列的背景色-前景色设置

┱Python中关于urllib和urllib2的问题

asp.net mvc 中关于验证问题data-val-number="The field 部门号 must be a number

请教关于SV中关于队列的问题

mvc3中关于Razor视图中的及页面区别,以及在啥情况下用哪个页面,最好能有实例。