错误的MVC路线匹配。 Asp.net

时间:2013-03-19 21:24:38

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

这是我的路线注册码:

        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 }
        );

我有一个链接/课程/视图/ 87

匹配的路线是/ course / list

任何人都可以解释原因吗?

谢谢

更新:

routes.IgnoreRoute( “{}资源个.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错误。

3 个答案:

答案 0 :(得分:0)

您的航线/观看/ {Id}路线似乎有“列表”操作。我希望这是一个错字。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

谢谢大家的时间。