我有一个几乎独立的Orchard模块。它是一个应用程序,包含一组控制器和视图,并执行它自己的基于EF的数据访问。
一旦我在Orchard中安装并激活了这个模块,我该如何请求它的控制器操作并在响应中提供它的视图?我知道它必须有一个Routes
类,并怀疑这是我必须做的事情才能启用对我的模块的访问。我知道一个模块实际上是一个区域,但我仍然要去理解Routes
类。
假设我的模块有一个控制器,操作和视图,Home,Index和Index,是Home / Index。 Orchard启动并运行后,如何访问此特定Index
肌动蛋白?
答案 0 :(得分:1)
Orchard文档中有一个很好的指南Creating an Orchard Module that uses its own controllers。
以下是从该指南中获取的代码示例,该示例为名为HelloWorld的模块创建路由:
using System.Collections.Generic;
using System.Web.Mvc;
using System.Web.Routing;
using Orchard.Mvc.Routes;
namespace HelloWorld {
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(
"HelloWorld",
new RouteValueDictionary {
{"area", "HelloWorld"},
{"controller", "Home"},
{"action", "Index"}
},
new RouteValueDictionary(),
new RouteValueDictionary {
{"area", "HelloWorld"}
},
new MvcRouteHandler())
}
};
}
}
}
如果您创建了一个实现IRouteProvider的类,您可以让Orchard知道您的控制器的路由。