0

这是我的路线注册码:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "course_list",
            "course/list",
            new { controller = "course", action = "list" }
        );

        routes.MapRoute(
            "course_view",
            "course/view/{id}",
            new { controller = "course", action = "list", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

我有一个链接 /course/view/87

匹配的路由是/course/list

谁能解释为什么?

谢谢

更新:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "course_list",
            "course/list",
            new { controller = "course", action = "list" }
        );

        routes.MapRoute(
            "course_view",
            "course/view/{id}",
            new { controller = "course", action = "view", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

但我仍然遇到同样的问题。当我访问:/course/view/87 时,我收到 404 错误。

4

3 回答 3

0

It appears that your route for course/view/{Id} has a 'list' action. I expect this is a typo.

于 2013-03-19T21:34:46.943 回答
0

将这些路由添加到一个空的 Asp.Net Mvc 4 项目并使用 routedebugger ( http://nuget.org/packages/routedebugger/ ),我得到一个“course/view/{id}”的匹配路由。您应该在本地使用 routedebugger 来查看发生了什么。上面的代码似乎没问题。

于 2013-03-19T21:41:16.290 回答
0

按钮元素被视为提交按钮(即:如果未设置默认类型属性,则 type="submit")。因此,浏览器发起了一个不满足路由的发布请求,因为我所有的操作都是 get(s)。

谢谢大家的时间。

于 2013-03-20T00:34:50.693 回答