【发布时间】:2011-09-23 11:54:00
【问题描述】:
我创建了一些包含路由部分的自定义内容类型,以便我的内容管理员可以编辑项目的 slug。我没有运气配置一条路线,使我自己的控制器能够为这些项目提供服务。
核心Routable模块中ItemController路径的路由优先级为10。我尝试制作一个利用IRouteConstraint的路由,类似于博客模块实现我想要做的事情,但优先级较低但仍然没有运气。
如果我让我的 URL 以 / 结尾,那么我的自定义路由将被激活,因为它与我的内容项的路径不匹配。这不是一个理想的解决方案。我不明白为什么它不会在属于可路由模块的路径之前发现我的自定义路径。
任何帮助将不胜感激,在此先感谢。
更新:
这是我的 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 中提供?让用户替代来呈现自定义形状是我唯一的选择吗?
果园论坛将是我的下一个呼叫点。再次感谢您提供的任何帮助。
【问题讨论】:
-
我可以帮助你,但我需要更多细节。您如何为每个内容项提供 slug、路线、路径、标题属性?如果您的问题只是最后的“/”,我很抱歉,但我认为您将不得不处理它。无论如何,您真的应该考虑在他们(官方果园团队成员)真正活跃的官方果园论坛上询问您的问题:orchard.codeplex.com/discussions
-
你能发布你的 RouteProvider.cs 吗?
标签: c# asp.net-mvc asp.net-mvc-3 routing orchardcms