Where should redirects be done

这一生的挚爱 提交于 2019-12-25 04:14:02

问题


I have searched a little around the internet looking for what might be a simple question. When using the MVC style of programming, where should a HTTP redirect be performed? Some say its a job for the controller layer and others say it is a job for the view layer.

From my current understanding of MVC it would be the controller as it coordinates the business logic. But I understand those who claim it would be the view layer with the argument that a redirect changes the visual presentation a client would receive.

Can anyone shed some light on this?


回答1:


Views in MVC structure is responsible for producing the response to user's activities. HTTP Location header would be part of that response.

Also, controllers are not responsible for dealing with business logic. The business logic is contained in the model layer. The controllers instead are in charge of altering the state of mode layer.




回答2:


You are right. Redirecting is part of the application logic, which is done in the controller. That's why you have a RedirectToAction, for example. Also read here.

A concrete example is the POST-Redirect-GET pattern, where you initiate a redirect at the end of a POST action method in a controller.

A view is responsible for view-related tasks, like rendering the UI based on a dedicated view model; and dealing with UI interactivity; but should not be aware of application logic.




回答3:


Sorry for my english. I mean View-layer could be used in wide and in narrow senses.

Wikipedia and some other sources describe View layer like a logic for every response. It belongs to the set of all available server responses.

But in practice there is different approach. All system statuses like 300, 400, 401, 403, 404 are managed from controller or router. It makes sense because a designer or an html-coder could make his job without knowledge how server-side technologies work.



来源:https://stackoverflow.com/questions/28141328/where-should-redirects-be-done

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!