【问题标题】:How do I run my Orchard Module?如何运行我的果园模块?
【发布时间】:2013-02-22 18:16:44
【问题描述】:

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

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

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

【问题讨论】:

  • 与任何 MVC 操作一样。只是不要忘记将区域指定为模块的文件夹名称。
  • 模块文件夹是Comair.RI。它有一个HomeController 和一个Index 操作,我有一个Home/Index 视图。当我尝试使用 url http://orchard-multi/Comair.RI/Home/Index 时,我得到一个 Orchard 'Not found' 错误。没有错误日志。我不知道为什么找不到。

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


【解决方案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 知道你的控制器的路由。

【讨论】:

  • 我假设 HelloWorld 是模块的名称,而不仅仅是为路由选择的任意名称。我复制的示例用null 代替了第二个空new RouteValueDictionary()。让我们希望那是错。
  • 该模块名为HelloWorld。我已经编辑了答案以使其更清晰。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 2012-03-01
相关资源
最近更新 更多