控制器会创建正确的路由,因此它们都能正常工作

时间:2019-07-12 18:51:28

标签: c# asp.net-mvc-5 routes

我目前在我的项目中有2个控制器。我的导航栏使用@ Html.ActionLinks,我有一个actionlink来选择动作和控制器。由于某些原因,操作是正确的,但并非总是选择控制器。所以我猜这与我的roureconfig有关吗?我一直在尝试让它选择正确的控制器,或者让它选择{controller} / {action}之一,但是我还是没有运气 我有一个PartsController和OrderStatusController。当我单击部件动作链接时,它们都起作用,但是当我单击订单状态动作链接时,它变为“部件”,“ OrderIndex”,甚至我专门说“ OrderStatus”,“ OrderIndex”,但这里有些原因我尝试过的配置?

 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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



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

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

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

1 个答案:

答案 0 :(得分:0)

像这样配置您的OrderStatus路线:

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

它必须位于默认路由之上,因为MVC框架会评估从上到下的路由(这里的顺序很重要),这也是为什么尝试订购状态时进入“零件”视图的原因。