我的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>
这样访问的时候就可以看到数据了!呵呵,是不是很简单呢!
希望对新手有点帮助!呵呵!
posted @ 2007-11-26 23:29  Awen  阅读(770)  评论(4编辑  收藏  举报