【问题标题】:Where should redirects be done应该在哪里进行重定向
【发布时间】:2015-01-25 20:49:56
【问题描述】:

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

根据我目前对 MVC 的理解,它将是控制器,因为它协调业务逻辑。但我理解那些声称它是视图层的人,他们认为重定向会改变客户端将收到的视觉呈现。

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

【问题讨论】:

  • “重定向会改变视觉呈现”——不,它不会。重定向仅重定向。时期。视图更改(或生成)视觉呈现。这是两件不同的事情,不应混为一谈。

标签: http model-view-controller


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答。我可以看到你关于观点的观点。我同意你对控制器责任的理解,只是不能用不同的方式表达。
【解决方案2】:

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

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

视图负责与视图相关的任务,例如基于专用视图模型渲染 UI;并处理 UI 交互性;但不应该了解应用程序逻辑。

【讨论】:

    【解决方案3】:

    对不起我的英语。我的意思是视图层可以在广义和狭义上使用。

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2023-03-13
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      相关资源
      最近更新 更多