创建HelloWorld模块
Orchard是构建在ASP.NET MVC之上,所以,请先了解一下MVC,这样,你能够更好的理解Orchard。
首先,你需要开启Code Generation特性,然后在控制台执行下面的命令:
codegen module HelloWorld
打开Modules文件夹->HelloWorld文件夹->module.txt文件,他是对HelloWorld文件的描述,我们将其更新如下:
name: HelloWorld
antiforgery: enabled
author: The Orchard Team
website: http://orchardproject.net
version: 0.5.0
orchardversion: 1.8.1
description: The Hello World module is greeting the world and not doing much more.
features:
HelloWorld:
Description: A very simple module.
Category: Sample
HelloWorld模块关联到/HelloWorld这个URL路径,为了让大家明白,这个路由是怎么实现的,我们手动创建一个Routes.cs文件,录入下面的代码(一般情况下,是不需要创建的):
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", // this is the name of the page url
new RouteValueDictionary {
{"area", "HelloWorld"}, // this is the name of your module
{"controller", "Home"},
{"action", "Index"}
},
new RouteValueDictionary(),
new RouteValueDictionary {
{"area", "HelloWorld"} // this is the name of your module
},
new MvcRouteHandler())
}
};
}
}
}
我们在Controllers文件夹中,添加HomeController.cs文件:
using System.Web.Mvc;
using Orchard.Themes;
namespace HelloWorld.Controllers {
[Themed]
public class HomeController : Controller {
public ActionResult Index() {
return View("HelloWorld");
}
}
}
这个控制器,用于响应来自/HelloWorld的请求。他有一个默认的行为,Index,返回特定的视图。
注意,如果我们在控制器上面加上了Themed特性,那么,返回的视图,将使用当前主题。
在Views文件夹下面,我们创建一个Home文件夹,然后再该文件夹中,创建HelloWorld.cshtml文件:
<h2>@T("Hello World!")</h2>
注意:Hello World字符串,包含在了T方法中,这意味着,字符串可以本地化
在控制台,执行下面的命令(你需要先开启Code Generation特性):
feature enable HelloWorld
在浏览器中,进入Orchard站点,进入/HelloWorld URL路径,就可以看到我们创建的页面了。