Orchard:如何生成Hello World模块
在Orchard架构介绍中对Orchard的一些架构内容进行了介绍,下图是Orchard自带的一些模块,
本篇讲解一下如何扩展Orchard来生成我们的第一个模块。
介绍
Orchard构建在ASP.NET MVC之上,MVC是一个应用模式,我在信息系统开发平台OpenExpressApp - Command扩展机制简单介绍了一下。在本篇示例中不包含任何数据,所以我们暂时不用关心model。我们只需要一个controller 和一个view。
在Orchard中Modules能够打包成一个可重用的资产,Modules被实现成一个MVC Areas。在MVC中Areas是一个包含一套独立于其他站点的功能的子站点(sub-sites)。
生成模块目录结构
在生成我们要做的模块示例的文件结构,我们需要先在Orchard的控制台中下载、安装和打开Code Generation 功能,不知道如何下载安装的看看我之前的几篇文档。对于命令行代码生成器的更多内容可以查看Command-line Code Generation.
一旦我们打开了代码生成功能,我们打开Orchard command-line,打上下面的命令来生成HelloWorld模块:
执行命令后,在Orchard网站的Modules目录下可以看到一个新的HelloWorld目录,在这个目录下可以找到文件module.txt ,按以下内容修改:


antiforgery: enabled
author: The Orchard Team
website: http://orchardproject.net
version: 0.5.0
orchardversion: 0.5.0
description: The Hello World module is greeting the world and not doing much more.
features:
HelloWorld:
Description: A very simple module.
Category: Sample
这个文件描述当前模块,在功能管理面板可以看到这个信息
注意:使用空格,而不是tab缩进
添加Route
示例将处理网站的相对地址/HelloWorld 。为了定义请求这个URL是要做什么,我们需要在HelloWorld目录下生成文件Routes.cs:


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())
}
};
}
}
}
一个Route是一个在URL和controller之间的映射,上面的代码是映射/HelloWorld URL到area HelloWorld 的Home controller的Index action
生成Controller
新的模块已经有一个Controllers 目录,下面需要生成HomeController.cs:


using Orchard.Themes;
namespace HelloWorld.Controllers {
[Themed]
public class HomeController : Controller {
public ActionResult Index() {
return View("HelloWorld");
}
}
}
这个controller处理URL /HelloWorld的请求。在定义Route时我们设置了默认为index的action,代码中Index方法返回HelloWorld视图。
注意在HomeController上的Themed 属性在视图在当前主题下获取皮肤时需要用到。
生成View
在Views目录下,生成一个Home的目录Views\Home,然后添加一个视图文件HelloWorld.cshtml:
注意使用T helper function是希望视图将来支持本地化,这虽然不是强制的,但是是一个好的实践。
添加新的文件到项目中去
上面工作做完之后,剩下的任务就是把这些文件加入HelloWorld.csproj项目文件中进行动态编译了。打开HelloWorld.csproj文件进行编辑:


<Compile Include="Routes.cs"/>
<Compile Include="Controllers\HomeController.cs"/>
</ItemGroup>
<Content Include="Views\HelloWorld.cshtml" />
激活模块
最后我们需要激活刚加的模块,在命令行下输入以下命令:
我们也可以在后台的【Features】中打开
使用Module
我们可以在网站地址之后添加URL /HelloWorld,显示如下界面:
参考: Building a Hello World module
推荐:你可能需要的在线电子书
我的新浪围脖: http://t.sina.com.cn/openexpressapp
欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]
更改清单文件 Manifest
相关文章:

通过域名访问自己部署到服务器上的项目
通过域名访问自己部署到服务器上的项目 如何不输入项目名端口号直接访问java web项目 1、省略输入端口号的步骤 在Linux的下面部署了tomcat,为了安全我们使用非root用户进行启动,但是在域名绑定时无法直接访问80端口号。众所周知,在unix下&am…

【java】异常的分类
注: 1、exception是人工可以修复的,但error的话很少出现,如果出现就无能为力了。 2、我们将所有派生于EXCEPTION和ERROR的类的所有异常称为(unchecked)非受查异常,其余为受查(checked…

【免费软件测试视频-0013】——Loadrunner9.0 SLA Analysis
LR9.0---SLA Analysis http://www.3atesting.com/mv/bencandy.php?fid15&id16转载于:https://www.cnblogs.com/umain/archive/2008/09/28/1301310.html

训练听力的相关方法
一、听写熟悉一些固定发音 二、多阅读相关的文章,文章相关内容越熟悉,听力效果越好【重要】 三、首先没有听懂的一些音不会影响后面的理解 四、解决口音问题的唯一方法是,多阅读、记忆相关内容【签证及联系教授也要注意】转载于:https://www.…

PHP生成PDF文档的FPDF类
以前在PHP4的早期版本中用PDFlib生成PDF文档比较容易,现在升级到PHP5了,发现更麻烦了,装的PHP 5.2.4默认没有PHPlib,从php.net上找了一个,装上竟一直报错,开始以为是版本兼容问题,后来在租来的服…

Codeforces Round #466 (Div. 2)
http://codeforces.com/contest/940 A水题 //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast,no-stack-protector") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tunenative") //#pragma …

WinCE中串口驱动及接口函数介绍(转载)
作者:ARM-WinCE 在WinCE中,串口驱动实际上就是一个流设备驱动,具体架构如图: 串口驱动本身分为MDD层和PDD层。MDD层对上层的Device Manager提供了标准的流设备驱动接口(COM_xxx),PDD层实现了HWOBJ结构及结构中若干针对于串口硬件操…

【jsp】写jsp文件的准备
1、引入jstl 代码实现: <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core" %> 2、编写common文件 代码实现: <c:set var"ctxpath" value"${pageContext.request.contextPath }">&l…

studio2008 无法显示该网页
莫名奇妙的studio调试的时候页面显示无法显示该网页,差网页后得知原来是C:\WINDOWS\system32\drivers\etc下的Hosts文件被修改了, 确认里面有127.0.0.1 localhost 行转载于:https://www.cnblogs.com/sunshinecc/archive/2011/11/11/2245596.html

侠客X官方网站成立,第一个内测版本即将放出,敬请期待.
这是一个难忘的日子,西方的情人节,本站的成立代表侠客X,即将与大家见面了。 我们的要做的是,传承侠客站群经典模式,打造SEO王者力作,侠客X即将公开测试,敬请期待。 http://xpk.in Qin 转载于:ht…

HSSFWorkbook 与 XSSFWorkbook
项目中一直使用NPOI与memcached,一直相安无事,但是最近升级了npoi到最新版本,发生了ICSharpCode.SharpZipLib的版本冲突问题. 因为此前一直使用的是NPOI的1.x的版本,用的SharpZipLib是0.84版本,而升级到最新版本以后,SharpZipLib的版本变成了0.86版本. 但是memcached的却没有最…

P1066 2^k进制数 NOIP 2006 提高组 第四题
洛谷蓝题(点击跳转) 提高组 第四题 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数。 (2)作为2^k 进制数,除最后一位外,r的每一位…

线段树专辑——pku 2886 Who Gets the Most Candies?
http://poj.org/problem?id2886 恩,分糖果,快乐的童年啊! 题目意思大概n个小孩围成一个圈,每个小孩手里有张卡片,记录着一个数字。开始从第k个孩子,该孩子离开圈子,然后告诉别人他手里的数字&a…

【jsp】通过get和post传值的区别
GET与POST的区别: GET方式提交表单,请求的参数在请求的头部,可以通过request.getQueryString()获取到请求参数及其参数值;POST方式提交表单,请求的参数在请求体中,所以request.getQueryString()方法无法获…

php获取输入流
uc中的用到的代码(在api/uc.php)代码: $post xml_unserialize(file_get_contents(php://input)); php手册(http://cn.php.net/manual/zh/wrappers.php.php)说明: php://input allows you to read raw data from the request bod…

微信小程序实例源码大全demo下载
怎么本地测试微信小程序实例源码 1.下载源码2.打开微信开发者工具3.添加项目->选择本项目目录->编译执行微信小程序实例源码大全 微信小程序游戏类demo:识色;从相似颜色中挑选不同的一个 源码链接:http://www.wxapp-union.com/forum.ph…

RabbitMQ 学习
参考:https://www.rabbitmq.com/getstarted.html 先在本地安装RabbitMQ 组件(需要安装Erlang组件),启动服务。 激活 RabbitMQs Management Plugin 使用RabbitMQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态。 打…

怎样提高WebService的性能
服务器端WebService程序using System.Runtime.Serialization.Formatters.Binary;using System.IO;using System.IO.Compression;using System.Data.SqlClient;………public class Service1 : System.Web.Services.WebService{[WebMethod(Description "直接返回 DataSet 对…

【jsp】jsp的内置对象(部分)
一、response 1、setStatus:设置响应状态码。 代码实现: response.setStatus(550); 更改的位置如图: 2、sendRedirect:服务器端跳转 代码实现: response.sendRedirect("Success.jsp"); 3、setContentRType:设置返回内容类型…

linux tar的使用方法
tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中&a…

关闭webstorm自动保存,并显示文件未保存标识
1.取消自动保存 2.显示编辑状态设置: 转载于:https://www.cnblogs.com/webSong/p/8807732.html

【转】SQL函数:字符串中提取数字,英文,中文,过滤重复字符
SQL函数:字符串中提取数字,英文,中文,过滤重复字符 --提取数字IF OBJECT_ID(DBO.GET_NUMBER) IS NOT NULLDROP FUNCTION DBO.GET_NUMBERGOCREATE FUNCTION DBO.GET_NUMBER(S VARCHAR(100))RETURNS VARCHAR(100)ASBEGINWHILE PATI…

【java】实现数据在页面之间传输
传数据页面: 方法:使用a标签传输数据 格式: <a name"C03S417" href"getRoomFinal.jsp?roomNumberC03S415">入住 </a> 接收数据页面: 方法: (1)使用java代…
Android画图学习总结(四)——Animation(上)
随着对Drewable的深入了解,发现了Drawable更加强大的功能:显示Animation。Android SDK介绍了2种Animation: Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果 Frame Animation:顺序播…

ES6 Rest参数
Rest参数接收函数的多余参数,组成一个数组,放在形参的最后,形式如下: function func(a, b, ...theArgs) { // ... }rest参数只包括那些没有给出名称的参数,注意,rest参数之后不能再有其它参数(即…

Data - 深入浅出学统计 - 下篇
本文是已读书籍的内容摘要,少部分有轻微改动,但不影响原文表达。 :以漫画形式来讲解最基本的统计概念和方法。 ISBN: 9787121299636https://book.douban.com/subject/26906845/2 - 探寻参数 2.1 - 中心极限定理(Central Limit The…

[网摘学习]在Ubuntu上安装和配置OpenStack Nova之二
再收藏一份Openstack的文章,这两天的操作与此相同.但其中出现的问题还需要查找原因.待个人继续学习研究. 原文参考:http://www.linuxde.net/2011/11/1599.html此处仅供学习记录,版权归原作者. OpenStack 是 Python 2.6 写的,CentOS 5.6 上默认的是 Python 2.4 的环境…

【Linux】Linux computer文件夹下各种文件的作用
1、bin:放可执行文件,一些Linux的命令 注:Linux的命令最终都是一些程序,这些程序都放在bin目录和sbin目录 2、boot : 启动目录 3、dev : 存放设备 注:在Linux中把所有硬件都叫设备 4、etc: 安装软件的各种…

售前十年,两种人生
售前十年,两种人生,多重感悟! 售前第一年: 你 开始会觉得兴奋、紧张、恐慌。你对客户的提问,会有机械性的反应,试着说服他,但客户的表现总让你很茫然,你总是想把自己装扮的像一个专家,甚至故意打…

点击返回上一页面
οnclick"javascript:window.history.back(-1);" 方法一、以按钮点击的方式实现: <input type"button" name"Submit" value"返回上一页" οnclick"javascript:window.history.back(-1);"> 或者 &l…