请注意,本站并不支持低于IE8的浏览器,为了获得最佳效果,请下载最新的浏览器,推荐下载 Chrome浏览器
欢迎光临。交流群:166852192

创建一个HelloWorld模块


本文讲述如何为Orchard创建一个非常小的模块,它仅仅显示一个“hello world”页。该文章写的比较简单,大家仅供参考。

介绍

Orchard是建立在ASP.NET MVC基础之上,这意味着如果你已经已经非常熟悉MVC,你您会很快的入手模块的开发, 如果没有也不用担心,我们将一步步教您如何去创建他。
MVC是分层模式:有数据模型(M),控制器(C),视图(V)。
本例中,我们没有任何数据,所有model没有使用,仅仅有一个controller和一个view。
Orchard的模块都可以打包,以便重新使用其他Orchard项目的扩展集。模块像MVC Areas一样实现,MVC中的areas是子网站,其中包含了一组功能,在相对于网站其它部分隔离执行。Orchard模块是有manifest文件的简单的area,它可能使用了Orchard API。

生成模块结构



要生成模块文件结构需要下载并启用Code Generation模块,打开命令行,用下面的命令创建HelloWorld模块:
 codegen module HelloWorld


修改清单



你现在应该有一个新的HelloWorld文件夹您的Orchard网站的Module文件夹下。 在此文件夹中,你会发现一个module.txt文件。 打开它,并自定义如下:
name: HelloWorldantiforgery: enabledauthor: The Orchard Teamwebsite: http://orchardproject.netversion: 0.5.0orchardversion: 0.5.0description: The Hello World module is greeting the world and not doing much more. features:    HelloWorld:        Description: A very simple module.        Category: Sample


这个文本文件中所描述的系统模块,在这个文件中包含的信息将被用于例如在功能管理画面。
注意:小心使用空格而不是制表符缩进这个文件

新增路由



模块应该处理/HelloWorld这个URL,为了声明当访问这个URL时做什么,需要在HelloWorld目录中创建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,                        new RouteValueDictionary {                            {area, HelloWorld},                            {controller, Home},                            {action, Index}                        },                        new RouteValueDictionary(),                        new RouteValueDictionary {                            {area, HelloWorld}                        },                        new MvcRouteHandler())                }            };        }    }}


 
路由描述了URL 与控制器行为之间的映射描述,这段代码映射/HelloWorld的URL到 HelloWorld area中Home 控制器的Index行为。

创建Controller



和MVC一样模块也有Controllers文件夹,创建HomeController.cs文件到Controller文件夹:.


 

using System.Web.Mvc;using Orchard.Themes;namespace HelloWorld.Controllers {    [Themed]    public class HomeController : Controller {        public ActionResult Index() {            return View(HelloWorld);        }    }}


 
这个控制器处理HelloWorld的URL请求,默认的行为是index,HelloWorld view将被呈现。
注意控制器类中的Themed特性,将请求当前激活主题的皮肤。


创建View



在Views文件夹下创建HelloWorld.cshtml文件:
<h2>@T(Hello World!)</h2>


这个文件指定视图的核心内容,周围将被添加当前主题的默认layout。
注意,我们使用T辅助功能使这个视图准备好本地化。这不是强制的,但它是个很好的体验。


添加新的文件到改项目



实际上下面所述都可以通过界面的形式完成,这里演示用原始的方式来执行;
我们几乎做完了,剩下的唯一任务是在模块中为动态编译系统文件集,打开HelloWorld.csproj文件,添加下面内容:
<ItemGroup>  <Compile Include=Routes.cs/>  <Compile Include=Controllers\HomeController.cs/></ItemGroup>


还为已经有的其它标签添加以下ItemGroup 配置节:
<Content Include=Views\Home\HelloWorld.cshtml />


激活模块



在命令行激活模块:
feature enable HelloWorld


当然我们也可以在管理面板中激活模块。


使用改模块



在浏览器输入网址+/HelloWorld,将会显示下面信息:

参考文件:http://docs.orchardproject.net/Documentation/Building-a-hello-world-module        

作者原创内容不容易,如果觉得内容不错,请点击右侧“打赏”,赏俩给作者花花,也算是对作者付出的肯定,也可以鼓励作者原创更多更好内容。
更多详情欢迎到QQ群 166852192 交流。