如何运行我的Orchard模块?

时间:2013-02-22 07:16:04

标签: asp.net-mvc asp.net-mvc-4 orchardcms

我有一个几乎独立的Orchard模块。它是一个应用程序,包含一组控制器和视图,并执行它自己的基于EF的数据访问。

一旦我在Orchard中安装并激活了这个模块,我该如何请求它的控制器操作并在响应中提供它的视图?我知道它必须有一个Routes类,并怀疑这是我必须做的事情才能启用对我的模块的访问。我知道一个模块实际上是一个区域,但我仍然要去理解Routes类。

假设我的模块有一个控制器,操作和视图,Home,Index和Index,是Home / Index。 Orchard启动并运行后,如何访问此特定Index肌动蛋白?

1 个答案:

答案 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知道您的控制器的路由。