【问题标题】:MVC routing error 404MVC 路由错误 404
【发布时间】:2012-05-20 00:05:34
【问题描述】:

我做错了什么?

我的默认 /User 路由

  routes.MapRoute(
            "User", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new {controller = "User", action = "Index", id = UrlParameter.Optional} // Parameter defaults
            );

我想分离代码,所以我创建了另一个控制器“UserProducts”

我的路线

 routes.MapRoute(
            "UserProducts", // Route name
            "user/products/{action}/{id}", // URL with parameters
            new { controller = "UserProducts", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

我的 UserProducts 控制器中有 ActionResult 索引,但是我的

localhost/user/products

不起作用:

Error 404 - The resource cannot be found.

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    您可能按错误的顺序排列它们。注册这些路由的顺序很重要,第一个映射将覆盖它之后的映射。将UserProducts 放在User 的上方。

    【讨论】:

    • 我不知道这像 css 一样工作,但是我改变了,再次没有结果......还有其他提示吗?
    • @NovkovskiStevoBato - 它实际上更像是 CSS 的反面。第一个匹配的路由模式将是坚持的模式。在 CSS 中,它将是最后一个。有没有先打routes.MapRoute("UserProducts", ... 的电话?
    • 检查我的截图prntscr.com/9g29z,正如我告诉你的,我交换了他们的位置,仍然错误
    • 因为您的“默认”路线首先被映射。这意味着它将覆盖它之后的所有内容。请记住,与 URL 匹配的第一个模式将是坚持的模式。因此,如果您希望名为“UserProducts”的产品覆盖其他产品,则必须将其放在首位。然后应该是“用户”,最后是“默认”。此外,“用户”的模式与“默认”的模式相同。它应该是 user/{action}/{id} 之类的东西,否则它将捕获所有内容,并且“默认”将永远不会受到影响。
    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多