我的monorail使用手记1(配置篇)

   看了博客园里面很多关于mvc框架的文章,感觉这样的开发和编码模式和传统的asp.net是有很大的区别的,除了其优秀的mvc模式,还有其页面的生命周期!我们知道asp.net的生命周期是很复杂的,这对性能也会造成一定的影响,而且它通过viewstate来保存状态,也是让人有些不爽的地方!呵呵,好了,胡说八道完了,该说说主角了!微软公司已经放出话来会放出mvc框架,那么作为asp.net的忠实粉丝,也该好好学习一下咯!现在是不可能接触到微软的mvc框架,所以, 只有monorail还有一个ProMesh,不过后者好像还不是很成熟,加上文档少,所以就学习学习一下monorail吧!
   首先下载安装包,或者二进制文件也行!地址: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.MonoRailSectionHandler
可以看出这是一个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所在的程序集的名称
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 >
至于作用大家都知道了吧,呵呵!
< 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
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 >
这样访问的时候就可以看到数据了!呵呵,是不是很简单呢!
希望对新手有点帮助!呵呵!

你可能感兴趣的:(ora)