OrchardCMSでAttributeRoutingを使用したい。そのためにはIRouteProvider
、Orchardのリストを返すメソッドを使用してを実装する必要がありますRouteDescriptor
。
次のようなことができるように、ルートリストを取得する方法が必要です。
public IEnumerable<RouteDescriptor> GetRoutes()
{
return _routes ?? (_routes = MvcRouting.GetRoutes(GetType().Assembly).Select(route => new RouteDescriptor
{
...
}).ToArray());
}
このメソッドはMvcRoutingからのものですが、より機能豊富なAttributeRoutingを使用したいのですが、ルーティング属性について現在のアセンブリをスキャンする方法が見つかりません。AttributeRoutingが、プロジェクトできるルートのリストをRouteDescriptor
sのリストに返すが、実際には登録せず、Orchardに任せる方法が必要です。
public class RouteDescriptor {
public string Name { get; set; }
public int Priority { get; set; }
public System.Web.Routing.RouteBase Route { get; set; }
public System.Web.SessionState.SessionStateBehavior SessionState { get; set; }
}
ルートを直接(Orchard以外のプロジェクトで)登録したい場合は、次のAttributeRouting拡張メソッドを使用します。
routesCollection.MapAttributeRoutes(config =>
{
config.AddRoutesFromAssembly(Assembly.GetExecutingAssembly());
}
しかし、これは他のOrchardモジュールではうまくいきません。したがって、上記のアプローチを取る必要があります。
あなたが考えることができる方法はありますか?