您的位置:首页 > 其它

Orchard路由

2015-10-02 19:47 288 查看

Orchard路由

Orchard模块开发中,每个模块都相当于MVC中的Area,默认的路由便是{模块名称}/{Controller}/{Action},很多时候这个Url不符合我们需求,这时候就需要自定路由了。Orchard提供了自定路由的方法,便是实现IRouteProvider。例子如下:

public class Routes : IRouteProvider
{
public void GetRoutes(ICollection<RouteDescriptor> routes)
{
foreach (var routeDescriptor in GetRoutes())
routes.Add(routeDescriptor);
}
public IEnumerable<RouteDescriptor> GetRoutes()
{
return new[]
{
new RouteDescriptor {
Priority = 99,//优先级,越高越优先匹配
Route = new Route(
"Admin/Article", // 自定义路由的Url模板,格式同MVC路由格式
new RouteValueDictionary {
{"area", "JiaZheng"}, // Area名称就是模块名
{"controller", "Article"},
{"action", "Index"}
},
new RouteValueDictionary(),
new RouteValueDictionary {
{"area", "JiaZheng"} // Area名称就是模块名
},
new MvcRouteHandler())
}
};
}
}


虽然实现了自定义路由,但是很不方便。经过测试,MVC自带的RouteAttribute是没有效果的,但是可以用反射来实现相同的效果。Url.Action也不一定能匹配到最终的Url,如果要获取最终显示的Url则用Url.AbsoluteAction这个Orchard的拓展。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: