`
netatomy
  • 浏览: 46825 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

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

4. 创建控制器

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

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

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

5. 创建视图

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

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

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

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

6. 更新项目文件

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

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

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

<Content Include="Views/HelloWorld.cshtml" />
<!--CRLF-->

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

7. 激活模块

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

feature enable HelloWorld

8. 使用模块

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

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

分享到:
评论

相关推荐

    Orchard CMS

    综上所述,Orchard CMS作为一个强大的开源CMS,结合了模块化、可扩展性和易用性。通过这些文件,我们可以进一步了解Orchard的数据库结构、配置设定以及可能的自定义扩展。开发者可以通过这些资源深入了解并定制自己...

    Orchard CMS: Up and Running

    Orchard CMS允许创建自定义的内容类型,这些内容类型可以包含一个或多个内容部件。内容部件是构成内容类型的组件,例如文本字段、图像、地理位置等。通过这种方式,Orchard CMS提供了极大的灵活性,可以轻松构建复杂...

    Orchard CMS Development

    通过以上介绍,我们可以看出Orchard CMS是一个高度模块化和可扩展的内容管理系统,提供了丰富的特性和功能来满足不同网站的需求。开发者可以根据项目需求定制内容类型、字段、模板以及其他组件,以构建出既美观又...

    cms资源汉化包Orchard.zh-CN1.5Beta

    Orchard是一个以微软为主导的开源CMS项目,它允许使用者在.Net平台上快速建立网站,并且提供扩展框架能够允许定制人员通过模块和主题等增加额外的内容,Orchard能够建设出复杂的内容管理系统,它提供了强大的模块化...

    Orchard CMS Up and Running

    ### Orchard CMS: Key Concepts and Components #### Introduction to Orchard CMS Orchard CMS is an open-source content management system (CMS) built on the .NET framework. It leverages ASP.NET MVC 3.0 ...

    Orchard CMS Extensibility

    对于希望构建定制化内容管理系统的企业和个人来说,Orchard CMS 是一个值得考虑的强大工具。 通过理解内容部件的概念及其组合方式,开发者可以更好地利用 Orchard CMS 的功能,从而创建出满足特定需求的网站。

    vc-orchard-cms:Virto Commerce Orchard CMS模块

    "Virto Commerce Orchard CMS模块"是一个专为电子商务设计的开源内容管理系统(CMS)扩展,它基于Orchard CMS平台,并且使用C#编程语言进行开发。Orchard CMS是一款高度可定制、模块化的.NET框架下的CMS,而Virto ...

    OrchardCH基于net框架的开源CMS

    综上所述,Orchard CMS是一个功能完备且高度可定制的.NET CMS平台,它结合了ASP.NET MVC的灵活性、NHibernate的数据管理、Autofac的服务定位以及 Castle Windsor的额外支持,为开发者提供了一个高效、强大的Web开发...

    CMS资源Orchard.Web.1.6

    Orchard是一个以微软为主导的开源CMS项目,它允许使用者在.Net平台上快速建立网站,并且提供扩展框架能够允许定制人员通过模块和主题等增加额外的内容,Orchard能够建设出复杂的内容管理系统,它提供了强大的模块化...

    Orchard1.2.41源代码

    1. **Orchard CMS**:Orchard 是一个高度可定制和模块化的CMS,旨在让开发者能够快速构建动态网站。它提供了强大的内容管理工具,包括内容创建、发布流程、工作流和权限管理。Orchard 的模块化设计使得用户可以根据...

    开源CMS平台orchard1.0正式版 基于ASP.NET MVC3

    Orchard CMS 是一个强大的开源内容管理系统,它基于微软的ASP.NET MVC3框架构建,提供了一个灵活且可扩展的平台,用于创建、管理和自定义各种类型的网站。这个“开源CMS平台orchard1.0正式版”发布标志着该系统的一...

    Orchard 1.8

    Orchard 1.8是Orchard CMS的一个重要版本,它与1.7.3并行发布,为用户提供了一种更新的选择。Orchard CMS是一款开源的内容管理系统(CMS),基于微软的C#编程语言和MVC4(Model-View-Controller)框架,旨在提供高度...

    orchard cms进阶教程完整4部,要认真看

    英文的自认为很有价值,orchard cms进阶教程完整4部,要认真看

    Orchard(开源.NET CMS) v1.6 安装包.zip

    Orchard是一个以微软为主导的开源CMS项目,它允许使用者在.Net平台上快速建立网站,并且提供扩展框架能够允许定制人员通过模块和主题等增加额外的内容,Orchard能够建设出复杂的内容管理系统,它提供了强大的模块化...

    orchard cms专业讲解视频教程,全面深入的讲解

    orchard cms专业讲解视频教程,大量内容!每集差不多1小时,是英文的,强烈建议英文好的同学下载,很有价值,在1.10.1和2上都尝试过,一切正常

    Orchard(开源.net CMS) v1.6 源码包.zip

    Orchard是一个以微软为主导的开源CMS项目,它允许使用者在.Net平台上快速建立网站,并且提供扩展框架能够允许定制人员通过模块和主题等增加额外的内容,Orchard能够建设出复杂的内容管理系统,它提供了强大的模块化...

    Orchard.Web.1.8.1

    这个名为"Orchard.Web.1.8.1"的版本是Orchard的一个特定迭代,它提供了稳定性和功能性的增强,适用于构建动态网站和管理数字内容。 在提供的文件列表中,我们可以看到几个关键的组成部分: 1. **install.sql**:这...

    Orchard.Source.1.8.1

    7. **src**:这是一个源代码目录,包含了Orchard CMS的所有源代码文件,如控制器、视图、模型和服务等,开发者可以深入研究和自定义。 8. **lib**:这个目录存放了Orchard依赖的各种库文件,这些库支持了Orchard的...

    orchard cms theme视频教程39集

    orchard cms theme视频教程39集,英文的不喜欢的别下载,这里上传的是下载地址

Global site tag (gtag.js) - Google Analytics