为Orchard CMS创建一个简单的HelloWorld模块

本文是阅读Orchard在线文档的笔记,原文见:http://www.orchardproject.net/docs/Building-a-hello-world-module.ashx,虽然对MVC知之甚少、对Razor还比较陌生,学习Orchard也刚刚开始,但也要坚持不懈的学习下去。

HelloWorld模块是一个非常简单的Orchard模块,其功能就是在浏览器里显示一段欢迎文本,所以只需要定义控制器和视图,不需要定义模型。

从ASP.NET MVC的角度看,模型是作为MVC Areas实现的。在MVC中Areas是包含许多功能的子站点,Areas彼此之间是相对隔离的。一个Orchard模块就是一个简单的带有清单的area。它可以使用Orchard的API。

1. 生成模块结构

打开Orchard命令行,输入以下命令来创建HelloWorld模块:

codegen module HelloWorld

执行这个命令后,会发现在网站根目录下的Modules文件夹中有一个HelloWorld文件夹,打开即可看到里面的结构,其中可以发现Orchard实际上是为我们创建了一个VS项目(HelloWorld.csproj),这样既可以使用VS2010开发模块,当然也可以使用任何一种文本编辑器来开发模块。

2. 修改清单

在HelloWorld根目录中有一个module.txt文件,这是描述此模块的清单文件,用于描述模块的名称,状态,作者,版本和包含的功能等内容,注意它的缩进用的是空格,不是制表符。

可以根据需要修改清单中的内容。

3. 添加路由

很显然这个模块是需要一个地址的,所以要给这个模块添加一个路由文件Route.cs,并放在HelloWorld根目录下:

   1: using System.Collections.Generic;
   2: using System.Web.Mvc;
   3: using System.Web.Routing;
   4: using Orchard.Mvc.Routes;
   5:  
   6: namespace HelloWorld {
   7:     public class Routes : IRouteProvider {
   8:         public void GetRoutes(ICollection routes) {
   9:             foreach (var routeDescriptor in GetRoutes())
  10:                 routes.Add(routeDescriptor);
  11:         }
  12:  
  13:         public IEnumerable GetRoutes() {
  14:             return new[] {
  15:                 new RouteDescriptor {
  16:                     Priority = 5,
  17:                     Route = new Route(
  18:                         "HelloWorld",
  19:                         new RouteValueDictionary {
  20:                             {"area", "HelloWorld"},
  21:                             {"controller", "Home"},
  22:                             {"action", "Index"}
  23:                         },
  24:                         new RouteValueDictionary(),
  25:                         new RouteValueDictionary {
  26:                             {"area", "HelloWorld"}
  27:                         },
  28:                         new MvcRouteHandler())
  29:                 }
  30:             };
  31:         }
  32:     }
  33: }

实际上这个文件Orchard已经创建好了,它在URL和控制器动作之间进行了映射,即将HelloWorld这个URL映射到使用Home控制器和Index动作的HelloWorld这个area上。

4. 创建控制器

在模块根目录下有个Controllers的文件夹(如果没有则创建一个),在这个文件夹中创建HomeController.cs文件,并输入下列内容:

   1: using System.Web.Mvc;
   2: using Orchard.Themes;
   3:  
   4: namespace HelloWorld.Controllers {
   5:     [Themed]
   6:     public class HomeController : Controller {
   7:         public ActionResult Index() {
   8:             return View("HelloWorld");
   9:         }
  10:     }
  11: }
  12:  

这段代码中,有个ThemedAttribute特性修饰了这个HomeController类,这表示让视图使用当前活动主题。类中的Index方法返回了名为"HelloWorld"的视图,所以后面要创建这个视图。

5. 创建视图

在模块根目录的Views文件夹中创建一个名为Home的子文件夹。在Views/Home文件夹中,创建名为HelloWorld.cshtml的视图文件,并输入以下内容:

<h2>@T("Hello World!")h2>

这就是要显示的核心内容,一个二级标题。它会根据当前主题的布局进行显示。

T是一个辅助函数,作用是让这个视图能够被本地化,这不是强制使用的。

6. 更新项目文件

如果上面的工作是在VS2010中做的,那么这一步可以直接跳过了,否则需要打开HelloWorld.csproj文件,添加以下内容,从而能够让上面创建的代码文件能够被动态编译:

<ItemGroup>
  <Compile Include="Routes.cs"/>
  <Compile Include="Controllers/HomeController.cs"/>
ItemGroup>

还要添加下面这条,让视图文件也包含在项目中:

<Content Include="Views/HelloWorld.cshtml" />

这样模块就开发好了,下面的工作就是激活这个模块。

7. 激活模块

激活模块有两种方法,一种方法是以管理员身份登录到后台管理面板的Feature页面激活HelloWorld,另一种方法是打开Orchard命令行,输入以下命令:

feature enable HelloWorld

8. 使用模块

现在可以回到前端页面,在地址栏最后加上/HelloWorld,让它看起来像这样:localhost/orchard/HelloWorld (我是在IIS7默认网站下创建的应用程序),然后回车,如果前面的步骤没有错误的话,就会看到页面的内容区域会显示“Hello World”在浏览器上。

这样一个简单的模块就创建完毕并能够使用了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值