应该在哪里进行重定向
Where should redirects be done
我在互联网上搜索了一下,寻找可能是一个简单的问题。使用 MVC 编程风格时,应该在哪里执行 HTTP 重定向?有人说是控制器层的工作,有人说是视图层的工作。
根据我目前对 MVC 的理解,它将是控制器,因为它协调业务逻辑。但我理解那些声称它将是视图层的人,他们的论点是重定向会改变客户端将收到的视觉呈现。
任何人都可以阐明这一点吗?
对不起我的英语。我的意思是视图层可以在广义和狭义上使用。
维基百科和其他一些资源将视图层描述为每个响应的逻辑。它属于所有可用服务器响应的集合。
但实际上有不同的方法。所有系统状态,如 300、400、401、403、404,均由控制器或路由器管理。这是有道理的,因为设计师或 html-coder 可以在不知道服务器端技术如何工作的情况下完成工作。
MVC 结构中的视图负责生成对用户活动的响应。 HTTP 位置 header 将是该响应的一部分。
此外,控制器不负责处理业务逻辑。业务逻辑包含在模型层中。相反,控制器负责改变模式层的状态。
你是对的。重定向是应用程序逻辑的一部分,在控制器中完成。例如,这就是您拥有 RedirectToAction 的原因。
另请阅读 here.
一个具体的例子是 POST-Redirect-GET 模式,您在控制器中的 POST 操作方法结束时启动重定向。
视图负责与视图相关的任务,例如根据专用视图模型渲染 UI;并处理 UI 交互性;但不应了解应用程序逻辑。
我在互联网上搜索了一下,寻找可能是一个简单的问题。使用 MVC 编程风格时,应该在哪里执行 HTTP 重定向?有人说是控制器层的工作,有人说是视图层的工作。
根据我目前对 MVC 的理解,它将是控制器,因为它协调业务逻辑。但我理解那些声称它将是视图层的人,他们的论点是重定向会改变客户端将收到的视觉呈现。
任何人都可以阐明这一点吗?
对不起我的英语。我的意思是视图层可以在广义和狭义上使用。
维基百科和其他一些资源将视图层描述为每个响应的逻辑。它属于所有可用服务器响应的集合。
但实际上有不同的方法。所有系统状态,如 300、400、401、403、404,均由控制器或路由器管理。这是有道理的,因为设计师或 html-coder 可以在不知道服务器端技术如何工作的情况下完成工作。
MVC 结构中的视图负责生成对用户活动的响应。 HTTP 位置 header 将是该响应的一部分。
此外,控制器不负责处理业务逻辑。业务逻辑包含在模型层中。相反,控制器负责改变模式层的状态。
你是对的。重定向是应用程序逻辑的一部分,在控制器中完成。例如,这就是您拥有 RedirectToAction 的原因。 另请阅读 here.
一个具体的例子是 POST-Redirect-GET 模式,您在控制器中的 POST 操作方法结束时启动重定向。
视图负责与视图相关的任务,例如根据专用视图模型渲染 UI;并处理 UI 交互性;但不应了解应用程序逻辑。