在此处(和CMS的一般情况下)完成到Orchard的菜鸟操作,因此请更正我可能有的任何误解。我有一个现有站点,正在尝试将其改编为Orchard模块。目标基本上是与以前相同的网站,但所有者可以通过Orchard GUI添加自己的博客文章页面。
此网站即模块(我称为SiteModule
)需要在应用程序的根级具有路由,以使其看起来像“我的网站+ CMS”,而不是“一个CMS +我的网站”。
如何在SiteModule
中构建路由,使它们位于应用程序的根目录中,而不是默认位于专用的/SiteModule
区域中?
答案 0 :(得分:0)
您可能会猜到它是默认设置,以防止模块互相踩踏,但是您可以轻松添加自己的路线。此代码假定模块中有两个控制器,分别称为Home和Default。在您的SiteModule项目的路径中创建一个Routes.cs
文件。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Orchard.Mvc.Routes;
namespace SiteModule {
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 = 5,
Route = new Route(
"Home/{action}",
new RouteValueDictionary {
{"area", "SiteModule"},
{"controller", "Home"},
{"action", "Index"}
},
new RouteValueDictionary(),
new RouteValueDictionary {
{"area", "SiteModule"}
},
new MvcRouteHandler())
},
new RouteDescriptor {
Priority = 5,
Route = new Route(
"Default/{action}",
new RouteValueDictionary {
{"area", "SiteModule"},
{"controller", "Home"},
{"action", "Gogo"}
},
new RouteValueDictionary(),
new RouteValueDictionary {
{"area", "SiteModule"}
},
new MvcRouteHandler())
}
};
}
}
}
我猜只是要注意,您并没有覆盖Orchard的默认路由:)