• MonoRail学习-介绍篇(一)


    MonoRail学习-介绍篇

    刚刚结束了使用Castle MonoRail的一个项目,所以想将在项目中的一些片段大家一起共享一样.由于这是一个网站项目,所以使用Monorail,因为他使用MVC模式,能够很好的使得界面和代码分离,有助于网页设计人员和程序员协调工作.准备以下文章:
    目录如下:
    MonoRails介绍
    MonoRails入门实例
    MonoRails Layouts
    MonoRails Component
    MonoRails SkipFilter

    MonoRails介绍
    这方面的文章有很多了,推荐查看Yok博客上的文章
    MonoRails介绍 http://yok.cnblogs.com/archive/2005/11/05/269383.html
    MonoRail - 生命周期及controller/action/view详解  http://yok.cnblogs.com/archive/2005/11/07/abc.html
    我就在这里简单总结一下:

    MonoRail是经典的MVC模式,所以其中也具有三个元素Model,Controller,View,其中MonoRail是通过Url地址来解析相应的操作的,如当你访问:/home/index.rail,对应会执行HomeController类中的Index方法,而且可以自动绑定参数和Request的数据,如访问:/home/index.rail?id=1,你可以在HomeController类中的Index方法中定义一个参数id,则在Index(int id)方法体会自动的得到id=1.
    MonoRail的界面通常使用NVelocity模板语言来定义.

    介绍方面就不多说了,下一节我们来通过一个实例来体验一下.

    实例代码下载:/Files/maplye/MonoRailWeb.rar
    虽然已经有人写了这方面的文章,
    如:流腥鱼看.net 一个简单的MonoRail例子
    但是为了阅读的完整性,我还是重新边作了新的实例边写了这篇文章。

    本实例使用VS2003,实例如下:
    1.到官方网站下载安装文件,地址如下:
    http://www.castleproject.org/index.php/Castle:Download
    目前最新版本Beta5
    (您也可以不需要下载,直接使用实例代码中lib中的dll)

    2.添加对
    Castle.MonoRail.Framework.dll
    Castle.MonoRail.Framework.Views.CompositeView.dll
    Castle.MonoRail.Framework.Views.NVelocity.dll
    NVelocity.dll
    的引用。
    若你没有下载和安装Castle,在我的实例代码的lib中有这些dll的文件

    3.创建一个Web项目,并在其下创建views和controllers目录
    4.在controllers目录下创建HomeController.cs,并创建Index方法,代码如下:

    using System;
    using Castle.MonoRail.Framework;

    namespace MonoRailTest.controllers
    {
    /**//// <summary>
    /// HomeController 的摘要说明。
    /// </summary>

    public class HomeController:Controller
    {
      
    public HomeController()
      
    {
       
    //
       
    // TODO: 在此处添加构造函数逻辑
       
    //
       }


      
    public void Index()
      
    {
        PropertyBag.Add(
    "name", "MonoRail实例");

       }


    }

    }


    5.在Views目录下创建home目录下,并在home目录下创建index.vm文件,代码如下:
    显示信息:$name


    6.配置web.config文件

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      
    <configSections>
      
    <section name="monoRail" type="Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler, Castle.MonoRail.Framework" />
    </configSections>
    <!--如果要使用Castle的IOC,则为-->
    <!--<monoRail   useWindsorIntegration="true"> -->
    <monoRail>
      
    <controllers>
       
    <!--定义controller所在的assembly-->
       
    <assembly>MonoRailWeb</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>
    </system.web>

    </configuration>

    7.配置iis,在iis中注册.rails的扩展名,查看 http://goodlyts.cnblogs.com/archive/2005/09/27/244686.html

    8.在Views目录下创建nvelocity.properties文件,内容如下:
    input.encoding=GB2312
    output.encoding=GB2312
    这是解决模板中中文乱码的问题

    9.现在就可以访问http://localhost:8089/home/index.rails,页面就会出现相应的信息了。

  • 相关阅读:
    dependencyManagement、parent与dependencies
    maven和gradle中,dependency和plugin的区别
    SpringMVC与Struts2区别
    RESTful风格与RESTful Api
    DBCP连接池配置参数
    js 函数的传值问题
    js 重载i
    js 对象与函数的区别
    子窗口 父窗口传值
    验证码
  • 原文地址:https://www.cnblogs.com/zengxlf/p/1520293.html
Copyright © 2020-2023  润新知