如何运行我的果园模块?
我有一个几乎独立的果园模块。它是一个包含控制器和视图集合的应用程序,并执行它自己的基于EF的数据访问。如何运行我的果园模块?
一旦我在Orchard中安装并激活了这个模块,我该如何请求它的控制器操作并将其作为响应来处理它的视图?我知道它必须有一个Routes
类,并且怀疑这是我必须做的事情来启用对我的模块的访问。我知道一个模块实际上是一个区域,但我仍然争取了解Routes
课程。
假设我的模块有一个控制器,动作和视图,Home,Index和Index,是Home/Index。一旦乌节路线正常运行,我如何访问这个特定的肌动蛋白Index
?
在果园文档中有一个很好的指南,可供Creating an Orchard Module that uses its own controllers使用。
下面是从指导创建一个名为HelloWorld的模块航线采取了代码示例:如果您创建一个实现IRouteProvider可以让果园知道你的控制器路由类
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())
}
};
}
}
}
。
我假设'HelloWorld'是模块的名称,而不仅仅是为路由选择的一些任意名称。我复制的例子有一个'null'来代替第二个空的'new RouteValueDictionary()'。让我们希望那是错误。 – ProfK 2013-02-22 10:06:46
该模块被称为HelloWorld。我编辑了答案,使之更清晰一些。 – 2013-02-22 10:17:25
与任何MVC操作一样。不要忘记指定该区域作为模块的文件夹名称。 – 2013-02-22 09:06:42
模块文件夹是* Comair.RI *。它有一个'HomeController'和'Index'操作,我有一个'Home/Index'视图。当我尝试url http:// orchard-multi/Comair.RI/Home/Index'时,我得到了Orchard'Not found'错误。没有错误日志。我不知道为什么没有找到。 – ProfK 2013-02-22 09:17:24