1

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

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

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

4

1 回答 1

1

Orchard 文档中有一个很好的指南来创建使用自己的控制器的 Orchard 模块

下面是取自该指南的代码示例,它为名为 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 知道你的控制器的路由。

于 2013-02-22T09:51:41.063 回答