Cuyahoga是一个国外著名开源的网站框架,能够方便的添加新的功能模块,而不需要改动框架本身 .下面介绍为其添加一个简单模块的步骤. 建议为每个模块创建一个独立的项目,以便能生成单一的程序集. 不要在Cuyahoga.Core项目中加入任何新的模块,不然在升级新版本时会遇到麻烦. 1.创建一个名为CuyahogaSampleModule的Asp.net Web Application 默认名字空间设为:Cuyahoga.Modules.Sample, 程序集名称设为:Cuyahoga.Modules.Sample . 目录结构如下:
还需在post-build event中添加以下命令:
2.在根目录下新增一个名为SampleModule.cs的类,作为模块的配置管理类. 这是模块的核心类 .用来存放一些不被.ascx或aspx包含的通用函数.这个类要派生自Cuyahoga.Core.Domain.ModuleBase. 代码如下 由于这是最基本的例子 所以不需要添加代码
![](https://i-blog.csdnimg.cn/blog_migrate/47bfc6668557815e4425a4ebc092ec22.png)
xcopy
/
s
/
y
"
$(ProjectDir)
"
Web/
*
.as?x
"
$(SolutionDir)
"
Web/Modules/Sample/ xcopy
/
s
/
y
"
$(ProjectDir)
"
Web/
*
.gif
"
$(SolutionDir)
"
Web/Modules/Sample/ xcopy
/
s
/
y
"
$(TargetDir)
"
Cuyahoga.Modules.Sample.dll
"
$(SolutionDir)
"
Web/bin/
在编译后将模块的页面,图片,程序集等文件copy到Web目录下.
![](https://i-blog.csdnimg.cn/blog_migrate/d5a3ca5b19d58fc2b18dabc6538b91b8.png)
using
System;
using
Cuyahoga.Core.Domain;
//
需要引用Cuyahoga.Core程序集
namespace
Cuyahoga.Modules.Sample {
public
class
SampleModule : ModuleBase { } }
3.在Web目录中新增一个.ascx用户控件 用来显示模块内容. Cuyahoga是将用户控件嵌入到模板中来显示内容.我们在控件中写入"hello world".ascx.cs中的类需要继承Cuyahoga.Web.UI.BaseModuleControl.
using
System;
namespace
Cuyahoga.Modules.Sample {
//
需要引用Cuyahoga.Web程序集
public
partial
class
Sample : Cuyahoga.Web.UI.BaseModuleControl {
protected
void
Page_Load(
object
sender, EventArgs e) { } } }
3.在cuyahoga_moduletype表中添加一条记录,以便cuyahoga知道如何创建模块的实例 所有安装的模块都在这个表中注册.在表中添加该模块信息 分别是模块名称, 程序集名称 ,模块控制器类名,路径(web目录下的),添加日期.
insert
into
cuyahoga_moduletype(name,assemblyname,classname,path,updatetimestamp)
values
(
'
sample
'
,
'
Cuyahoga.Modules.Sample
'
,
'Cuyahoga.Modules.Sample.SampleModule
'
,
'
modules/Sample/Sample.ascx
'
,
getDate
())
这样就添加上了一个新模块 , 编译以后 在后台管理页面为一个section添加该模块 ,可以看到效果了.