model-view-controller - 在 Web MVC 框架中,谁负责显示 404 页面?

标签 model-view-controller

在 Web MVC 模型中,哪个类/对象具有调用 404 页面的责任/功能?它为什么有责任?我认为是路由器问题,但我问是为了以防万一。

$router->show_404("Unable to find controller.");

此外,404 页面应该是一个 View 还是只是一个模板?这里的标准做法是什么?

-- 更新,让事情更清晰 --

例如,如果我们同意 Router 类拥有调用 404 页面的功能/责任,那么我们是否应该将 Router 对象注入(inject)我们实例化的 Controller 每个 Controller 都可以使用 Router 对象来调用 404?或者我应该创建一个自定义类来显示“特殊页面”,如 Error/404s?

感谢您的回答。

最佳答案

视情况而定。

如果是由于路由无效,则可以由路由器本身处理,或者您可以使用指向 404 处理程序的默认路由。

如果是由于有效路由接收到无效数据(/user/JohnDoe,但 John Doe 不为系统所知),则 404 必须由处理程序启动那条路线。

一旦 404 被触发,我倾向于选择轻便、快速的页面报告它,但是有很多网站会,例如,进行近似匹配搜索并返回一个列表“你是说其中一个吗这些东西?”我不确定在这两种情况下我将哪种方式称为“标准做法”,除非你谈论的是 REST API,它通常会发送最小响应,因为它们旨在提高机器可读性,所以没有太多提出一个只有人类才能回答的问题是有意义的。

关于model-view-controller - 在 Web MVC 框架中,谁负责显示 404 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5610183/

相关文章:

java - 从Java中的单独类文件调用方法

Java - JRadioButton选择出现面板

java - 使用 ModelAndView 还是返回 String 作为 View 更好?

c# - 发布请求正文太大(参数对象中的字符串太大)

c# - 返回带有查询字符串的 View

java - 同步 Controller 与 View

c# - 对存储库模式构造函数的困惑

javascript - backbone.js 示例

c# - 构建 Rails 应用程序和构建 ASP.NET MVC 应用程序之间的区别?

PHP - 在 MVC 中在哪里实现 session 逻辑?