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,页面就会出现相应的信息了。

转载于:https://www.cnblogs.com/zengxlf/archive/2009/07/10/1520293.html

MonoRail学习-介绍篇(一)相关推荐

  1. Windows内网协议学习LDAP篇之域用户和计算机用户介绍

    0x00 前言 这篇文章主要介绍AD里面的域用户,计算机用户. 0x01 域用户 1. 查询域用户 当我们拥有一个域用户的时候,想要枚举域内的所有用户,主要有两个方法. (1) 通过SAMR 协议查询 ...

  2. 深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等

    [深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...

  3. Monorail学习笔记

    Monorail学习笔记  2008-4-19 huangxu <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:o ...

  4. MonoRail学习笔记一:一个小例子

    随着微软放出消息,准备发布MVC的框架,各种议论纷至沓来. 以前用java.jsp对它的MVC结构.集中控制印象特别深刻,自从用了.NET后,虽然webform的控件很好用,总感觉有点怪怪的 在网上搜 ...

  5. MonoRail学习笔记五:定制服务实现自定义功能

    在上一篇MonoRail学习笔记四:MonoRail基本流程分析 中我提到,MonoRail中可以自定义一些服务.比如可以定义自己的Url解析类,来实现http://localhost:***/ind ...

  6. 深度学习实战篇-基于RNN的中文分词探索

    深度学习实战篇-基于RNN的中文分词探索 近年来,深度学习在人工智能的多个领域取得了显著成绩.微软使用的152层深度神经网络在ImageNet的比赛上斩获多项第一,同时在图像识别中超过了人类的识别水平 ...

  7. JNI学习开始篇 基础知识 数据映射及学习资料收集

    JNI学习开始篇 基础知识 数据映射及学习资料收集 JNI介绍 JNI(Java Native Interface) ,Java本地接口. 用Java去调用其他语言编写的程序,比如C或C++. JNI ...

  8. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...

    本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...

  9. Kubernetes系列之Helm介绍篇

    本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复[K8s实战]获取 介绍 Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来 ...

最新文章

  1. java sip 携带sdp_SIP中的SDP offer/answer交换初探
  2. 智能工业监管控制系统 ——以遵化海祥机械项目为例
  3. Scala 递归学习的例子
  4. php 定义数字int,php中的int参数
  5. 使用PIL库使用文本生成图片(类验证码)
  6. android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...
  7. Android usb audio调用流程(二)
  8. 智能优化算法——遗传算法(C语言实现)
  9. 简谈FPGA实现高斯滤波
  10. P4568 飞行路线
  11. 蒙牛、小米、比亚迪,明星企业为何扎堆换LOGO?
  12. MT6573 android 系统默认语言处理流程
  13. 微信接口类php,【微信接口库】分享10个常用的php微信接口类
  14. Elasticsearch个人学习笔记
  15. QTP/UFT能捕捉到对象但是点击不了,录制点击也没反应
  16. ps考试引擎安装溢出屏幕
  17. 【计算机图形学】实验报告1用OpenGL画线命令绘制一个多边构成图形或场景
  18. pageoffice在Edge浏览器、谷歌浏览器42及以上版本和火狐浏览器52及以上版本兼容处理
  19. Pycharm和Pytorch安装教程配置环境以及遇到的问题:
  20. 《RFID原理及应用》期末复习总结(1)

热门文章

  1. 算法—实现排列 A(n,m)
  2. Win32ASM学习[19]:结构与联合
  3. 【C++ grammar】C++简化内存模型
  4. 【视觉项目】【day2】8.21号实验记录(手机固定高度15cm拍摄+直方图均衡化+模板匹配,模板12个,测试28个,效果十分差)
  5. Java—— TCP协议(相关代码实现以及相关优化)
  6. 递归-裴波那契数列(代码、分析、汇编)
  7. 简陋版C语言仿真通讯录
  8. Effective C++学习第五天
  9. python字符串系列
  10. mysql主从虚拟机_虚拟机centos7Mysql实现主从配置