果园cms路由问题

Bre*_*dan 11 c# asp.net-mvc routing orchardcms asp.net-mvc-3

我创建了一些自定义内容类型,其中包括路径部分,因此我的内容管理员可以编辑项目的slu .. 我没有运气配置一个路由,使我自己的控制器能够为这些项目提供服务.

核心Routable模块中ItemController路径的路径优先级为10.我尝试制作一条利用IRouteConstraint的路由,类似于Blog模块实现我想做的事情,优先级较低但仍然没有运气.

如果我使用/结束我的URL,则会激活我的自定义路由,因为它与我的内容项的路径不匹配.这不是一个理想的解决方案.我无法理解为什么它不会在属于Routable模块的路径之前发现我的自定义路由.

非常感谢任何帮助,非常感谢提前.

更新:
这是我的IRouteProvider实现中的GetRoutes方法:

    public IEnumerable<RouteDescriptor> GetRoutes()
    {
        return new[] {
            new RouteDescriptor
            {
                Priority = 0,
                Route = new Route(
                    "Admin/Jugganort/{controller}/{action}/{id}",
                    new RouteValueDictionary {
                                                {"area", "Jugganort"},
                                                {"controller", "Area"},
                                                {"action", "List"}
                                            },
                    new RouteValueDictionary(),
                    new RouteValueDictionary {
                                                {"area", "Jugganort"}
                                            },
                    new MvcRouteHandler())
            },
            new RouteDescriptor
            {
                Priority = 9,
                Route = new Route(
                    "{location}/{merchant}/{promotion}",
                    new RouteValueDictionary {
                                                {"area", "Jugganort"},
                                                {"controller", "Home"},
                                                {"action", "Index"},
                                                {"merchant", UrlParameter.Optional},
                                                {"promotion", UrlParameter.Optional}
                                            },
                    new RouteValueDictionary { 
                        { "location", _routeConstraint }
                    },
                    new RouteValueDictionary {
                                                {"area", "Jugganort"}
                                            },
                    new MvcRouteHandler())
            }
        }; 
    }  
Run Code Online (Sandbox Code Playgroud)

_routeConstraint是IRouteConstraint的一个简单实现,它只为路径中的位置查找硬编码的"newcastle"值.

我对RoutePart的理解不正确吗?这些项目是否总是必须从Routable模块的ItemController中提供?用户交替使用自定义形状是我唯一的选择吗?

果园论坛将是我的下一个电话.再次感谢您提供的任何帮助.

Pio*_*myd 7

您也可以从您自己的控制器中提供这些物品.唯一需要的是一条可以到达控制器的路线.然后,你可以返回你想要的任何东西:)

看起来您的URL正在被其他一些路由匹配.如果要覆盖默认路由并确保首先进行比较,则应指定更高的优先级(例如,11).Orchard.Core.Routable.Routes中的catch-all路由的优先级为10,因此甚至可以捕获与您的路由匹配的URL.

您没有在第一个路径中为id提供默认值 - 这也可能会造成问题.如果未在URL中明确指定id,则不会匹配.

顺便说一下,Area是第一条路线中默认控制器的专有名称,还是只是一个错字?