我创建了一些自定义内容类型,并包括路由部分以便我的内容管理者可以编辑项目的 slug。我无法配置一个路由,使得我自己的控制器能够为这些项提供请求服务。核心 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())
}
};
}
_routeConstraint是IRouteConstraint的简单实现,它只是在路由中查找“newcastle”的硬编码值。
我对RoutePart的理解不正确吗?这些项总是需要从可路由模块的ItemController提供服务吗?我的唯一选择是使用备选项来呈现自定义形状吗?
Orchard论坛将是我的下一个寻求帮助的地方。再次感谢您提供的任何帮助。