![](/CuteSoft_Client/CuteEditor/images/emteeth.gif)
首先下载安装包,或者二进制文件也行!地址:http://sourceforge.net/project/showfiles.php?group_id=124416
接下来我们可以开始体验之旅咯
注意:你的IDE必须支持webapplication,也就是web应用程序,而不是网站,你可以装插件也可以打sp1,两者皆可!
然后我们新建一个webApplication,首先是web.config文件
这里问题比较多,呵呵!
1
<
configSections
>
2 < section name = " monorail " type = " Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler,Castle.MonoRail.Framework " />
3 </ configSections >
这里是添加一个配置节,类型为
Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler2 < section name = " monorail " type = " Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler,Castle.MonoRail.Framework " />
3 </ configSections >
可以看出这是一个handler!注意name属性应为全部小写,刚开始我分大小写,会出现无法识别monorail配置节,也就死下面这个东东!
monorail配置节
1
<
monorail
>
2 < controllers >
3 < assembly > Mvcmonorail </ assembly >
4 </ controllers >
5 < viewEngine viewPathRoot = " Views " customEngine = " Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine,Castle.MonoRail.Framework.Views.NVelocity " >
6 </ viewEngine >
7 </ monorail >
controllers配置节得assembly是用来指定contorller所在的程序集的名称
2 < controllers >
3 < assembly > Mvcmonorail </ assembly >
4 </ controllers >
5 < viewEngine viewPathRoot = " Views " customEngine = " Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine,Castle.MonoRail.Framework.Views.NVelocity " >
6 </ viewEngine >
7 </ monorail >
viewEngine是视图引擎的配置:viewPathRoot属性为视图文件vm的文件夹,这里是views,customEngine指定引擎的类型
接下来是http处理程序和模块的配置了
1
<
httpHandlers
>
2 < add verb = " * " path = " *.ashx " type = " Castle.MonoRail.Framework.MonoRailHttpHandlerFactory,Castle.MonoRail.Framework " />
3 < add verb = " * " path = " *.vm " type = " System.Web.HttpForbiddenHandler " />
4 </ httpHandlers >
5 < httpModules >
6 < add name = " monorail " type = " Castle.MonoRail.Framework.EngineContextModule, Castle.MonoRail.Framework " />
7 </ httpModules >
至于作用大家都知道了吧,呵呵!
2 < add verb = " * " path = " *.ashx " type = " Castle.MonoRail.Framework.MonoRailHttpHandlerFactory,Castle.MonoRail.Framework " />
3 < add verb = " * " path = " *.vm " type = " System.Web.HttpForbiddenHandler " />
4 </ httpHandlers >
5 < httpModules >
6 < add name = " monorail " type = " Castle.MonoRail.Framework.EngineContextModule, Castle.MonoRail.Framework " />
7 </ httpModules >
< add verb = " * " path = " *.vm " type = " System.Web.HttpForbiddenHandler " />
这句的作用是可以防止vm文件被浏览
接下来写个小例子吧!首先建立controllers文件夹,这个是默认的
接着建立HomeController.cs
1
using
System;
2 using System.Data;
3 using Castle.MonoRail.Framework;
4 using Qing;
5 using System.Collections.Generic;
6 using Northwind.Model;
7 namespace Mvcmonorail.Controllers
8 {
9 public class HomeController:Controller
10 {
11
12 public void Index()
13 {
14 PropertyBag.Add( " name " , " A文 " );
15
16 }
17 public void List()
18 {
19 List < DataRow > list = new List < DataRow > ();
20 Products p = new Products();
21 DataTable dt = p.SelectAsDataSet().Tables[ 0 ];
22 foreach (DataRow dr in dt.Rows)
23 {
24 list.Add(dr);
25 }
26 PropertyBag.Add( " list " , list);
27
28
29 }
30
31
32 }
33 }
34
这里写了两个Action,一个是index,一个是list
2 using System.Data;
3 using Castle.MonoRail.Framework;
4 using Qing;
5 using System.Collections.Generic;
6 using Northwind.Model;
7 namespace Mvcmonorail.Controllers
8 {
9 public class HomeController:Controller
10 {
11
12 public void Index()
13 {
14 PropertyBag.Add( " name " , " A文 " );
15
16 }
17 public void List()
18 {
19 List < DataRow > list = new List < DataRow > ();
20 Products p = new Products();
21 DataTable dt = p.SelectAsDataSet().Tables[ 0 ];
22 foreach (DataRow dr in dt.Rows)
23 {
24 list.Add(dr);
25 }
26 PropertyBag.Add( " list " , list);
27
28
29 }
30
31
32 }
33 }
34
index只是简单的在属性包(范型字典)里面加上一个名字,而这个字符串对象最终会通过引擎解释并显示出来
list是用一个datarow集合,数据访问用的是Qing,偷懒用的,呵呵!
这里推荐开发的时候用自己的业务实体类型,这也是大家所推荐的!
这里只是为了测试一下而已!数据库用的是northwind!
接下来是vm文件了,在views文件夹下建立home文件夹,然后为每个action建立vm文件
<
table
>
<!-- # foreach ($p in $list) -->
< tr >
< td >
$p.SupplierID < br />
</ td >
< td >
$p.ProductID < br />
</ td >
< td >
$p.ProductName < br />
</ td >
</ tr >
<!-- #end -->
</ table >
这样访问的时候就可以看到数据了!呵呵,是不是很简单呢!
<!-- # foreach ($p in $list) -->
< tr >
< td >
$p.SupplierID < br />
</ td >
< td >
$p.ProductID < br />
</ td >
< td >
$p.ProductName < br />
</ td >
</ tr >
<!-- #end -->
</ table >
希望对新手有点帮助!呵呵!