ASP.NET的MVC框架 Castle MonoRail 学习(一)
很喜欢使用.net 中的MVC框架,对于集中控制,模板语言的灵活性印象很深刻。最近准备系统的学习Monorail,到网上一搜,学习Monorail的资料还真的不少,在博客中开了这个分类权当做自己的学习笔记。我准备用Monorail搭建个三次框架,WebPage 做页面的展现(其实也可以反射几个基本的对象到页面,比如数据库的操作,在前台使用Nvelocity 加Ajax实现业务逻辑的部分,我在实际的项目经常这样使用,这样做有很多的灵活性),Web层实现业务逻辑和Controller,Data层可以考虑使用Nhibernate(暂时使用SqlHelper,以后可以考虑扩展)。
我看过的学习资料
永春阁的Monorail学习比较 http://www.cnblogs.com/firstyi/archive/2007/10/19/930691.html
Qin的博客 http://www.cnblogs.com/zq535228/category/115327.html
注意的要点:
1. 配置文件
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="monoRail" type="Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler, Castle.MonoRail.Framework"/>
</configSections>
<appSettings/>
<connectionStrings/>
<!--如果要使用Castle的IOC,则为-->
<!--<monoRail useWindsorIntegration="true"> -->
<monoRail>
<controllers>
<!--定义controller所在的assembly-->
<assembly>MyMonorail.Controller</assembly>
</controllers>
<viewEngine viewPathRoot="Views" customEngine="Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine, Castle.MonoRail.Framework.Views.NVelocity"/>
</monoRail>
<system.web>
<httpHandlers>
<!--定义httpHandler, 让MonoRailHttpHandlerFactory接管指定扩展名的url-->
<add verb="*" path="*.rails" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework"/>
<!-- 阻止模板文件被下载 -->
<add verb="*" path="*.vm" type="System.Web.HttpForbiddenHandler"/>
</httpHandlers>
<compilation debug="true"/>
</system.web>
</configuration>
2.Controller 类<configuration>
<configSections>
<section name="monoRail" type="Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler, Castle.MonoRail.Framework"/>
</configSections>
<appSettings/>
<connectionStrings/>
<!--如果要使用Castle的IOC,则为-->
<!--<monoRail useWindsorIntegration="true"> -->
<monoRail>
<controllers>
<!--定义controller所在的assembly-->
<assembly>MyMonorail.Controller</assembly>
</controllers>
<viewEngine viewPathRoot="Views" customEngine="Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine, Castle.MonoRail.Framework.Views.NVelocity"/>
</monoRail>
<system.web>
<httpHandlers>
<!--定义httpHandler, 让MonoRailHttpHandlerFactory接管指定扩展名的url-->
<add verb="*" path="*.rails" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework"/>
<!-- 阻止模板文件被下载 -->
<add verb="*" path="*.vm" type="System.Web.HttpForbiddenHandler"/>
</httpHandlers>
<compilation debug="true"/>
</system.web>
</configuration>
public class HomeaController : Castle.MonoRail.Framework.Controller
类名字HomeaController homea 对应与web页面下的homea 文件夹。
3.方法 public void Indexa()
方法的名字 Indexa 与homea文件夹下的模板名字相同 indexa.vm
4.views 下的nvelocity.properties 文件很重要,默认情况下Nvelocity是不支持中文的,加上这个文件防止中文乱码。
Demo下载地址:https://files.cnblogs.com/ilahsa/monorail1_nvelocity.rar