繁体   English   中英

MVC路由匹配错误。 Asp.net

[英]Wrong MVC route matched. Asp.net

这是我的路线注册代码:

        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

谁能解释为什么?

谢谢

更新:

route.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错误。

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

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

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

谢谢大家的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM