重定向应该在哪里完成

时间:2015-01-25 20:49:56

标签: http model-view-controller

我在互联网上搜索了一下,寻找可能是一个简单的问题。使用MVC编程风格时,应该在哪里执行HTTP重定向?有人说它是控制器层的工作,而其他人说它是视图层的工作。

从我目前对MVC的理解,它将是控制器,因为它协调业务逻辑。但我理解那些声称它的视图层的参数是重定向改变了客户端会收到的视觉表达。

任何人都可以对此有所了解吗?

3 个答案:

答案 0 :(得分:1)

MVC结构中的视图负责产生对用户活动的响应。 HTTP Location标头将成为该响应的一部分。

此外,控制器不负责处理业务逻辑。业务逻辑包含在模型层中。而控制器则负责改变模式层的状态。

答案 1 :(得分:1)

你是对的。重定向是应用程序逻辑的一部分,它在控制器中完成。这就是为什么你有一个RedirectToAction,例如。 另请阅读here

一个具体示例是POST-Redirect-GET模式,您可以在控制器中的POST操作方法结束时启动重定向。

视图负责与视图相关的任务,例如基于专用视图模型呈现UI;处理UI交互;但不应该知道应用程序逻辑。

答案 2 :(得分:0)

抱歉我的英文。我的意思是View-layer可以广泛和狭义地使用。

维基百科和其他一些来源将View层描述为每个响应的逻辑。它属于所有可用服务器响应的集合。

但实际上有不同的方法。所有系统状态如300,400,401,403,404都是从控制器或路由器管理的。这是有道理的,因为设计师或html编码器可以在不知道服务器端技术如何工作的情况下完成工作。