今天学习了MonoRail,感觉.net下面的MVC模式还挺简单的,可能我看的例子太简单,不过万事都是从简单学起,越简单就越好。我虽然看的英文的指南,但是文章都是通俗易懂,连我这个英文菜鸟看起来都觉得没有什么难度。

下面就是通过一个最最简单的例子来理解一下.net 下面怎么实现mvc模式的。
(1)首先新建一个"MonoRail"的web项目。去官方网站下载MonoRail beta4 最新版本http://sourceforge.net/project/showfiles.php?group_id=124416,然后在项目中添加下面引用
Castle.Components.Binder.dll
Castle.Components.Common.EmailSender.dll
Castle.Components.Validator.dll
Castle.Core.dll
Castle.MonoRail.Framework.dll
Castle.MonoRail.Framework.Views.NVelocity.dll
MonoRail.dll
NVelocity.dll
这些应用也可以在我的代码示例的bin中找到
(2)在项目中建3个文件夹
Controllers: 控制器
Models: 模型
Views: 视图
(注:不一定要按照这种规范文件夹名可以由自己定义)

(3)在Controllers 文件夹下面新建一个HomeController.cs 文件

using System;
using Castle.MonoRail.Framework;

namespace MonoRailTest.Controllers
{
    
    public class HomeController :Controller
    {

public void Index()
        {
            PropertyBag.Add("name", "hello word");
        }

}
}

(4)对应上面的控制器代码新建一个视图文件放到Views下面文件名为index.vm,(在MonoRail下面即支持NVelocity也支持aspx,不过建议用Nvelocity,使用起来比较简单。)
Nvelocity的语法可以查看http://jakarta.apache.org/velocity/docs/vtl-reference-guide.html
index.vm

<html>
  <body>
    Hi there, my name is $name!  </body>
</html>

OK,通过这个页面就可以把控制器里面的“name”属性显示到页面上了。

(5)当然,最后想在浏览器上面显示还需要一些配置。.
配置Web.config

<?xml version="1.0"?>
<configuration>
 <configSections>
  <section name="monorail" type="Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler, Castle.MonoRail.Framework"/>
 </configSections>
 <!--
  For more on MonoRail configuration see
  http://www.castleproject.org/monorail/documentation/v1rc3/index.html
 -->
 <monorail smtpHost="yoursmtphost" useWindsorIntegration="false">
  <controllers>

//应用程序名的引用,可以使多个
   <assembly>MonoRail</assembly>
  </controllers>
  <viewEngines viewPathRoot="Views">
   <add xhtml="false" type="Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine, Castle.MonoRail.Framework.Views.NVelocity"/>
  </viewEngines>
 </monorail>
 <system.web>
  <httpHandlers>
   <add verb="*" path="*.castle" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework"/>
   <!-- block direct user access to template files -->
   <add verb="*" path="*.vm" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.njs" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.brail" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.brailjs" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.st" type="System.Web.HttpForbiddenHandler"/>
  </httpHandlers>
  <httpModules>
   <add name="monorail" type="Castle.MonoRail.Framework.EngineContextModule, Castle.MonoRail.Framework"/>
  </httpModules>
  <compilation debug="true"/></system.web>
</configuration>

在浏览器打上http://localhost/Home/index.castle就可以看到页面上显示
“Hi there, my name is  hello word!”
属性“name”被显示到页面上了,是不是很简单呢?
代码示例:http://download.csdn.net/detail/lxf88071332/4137279

转载于:https://www.cnblogs.com/kay-1983/archive/2012/03/09/2387661.html

MonoRail例子(入门篇)相关推荐

  1. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

    我假设读者已经了解了c#的语法,本文是针对刚打算解除串口编程的朋友阅读的,作为串口编程的入门范例,也是我这个系列的基础. 我们的开发环境假定为vs2005(虽然我在用vs2010,但避免有些网友用20 ...

  2. Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:没有了 下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置 前言 V1.x版本终于到来了.本次 ...

  3. SQL注入漏洞全接触--入门篇

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  4. Python从入门到精通 - 入门篇 (下)

    上一讲回顾:Python从入门到精通 - 入门篇 (上) 接着上篇继续后面两个章节,函数和解析式. 4 函数 Python 里函数太重要了 (说的好像在别的语言中函数不重要似的).函数的通用好处就不用 ...

  5. Python从入门到精通 - 入门篇 (上)

    转载自微信公众号:王的机器 0 引言 微信公众号终于可以插代码了,Python 可以走一波了.首先我承认不是硬核搞 IT 的,太高级的玩法也玩不来,讲讲下面基本的还可以,之后带点机器学习.金融工程和量 ...

  6. matplotlib中文文档_python绘图库——Matplotlib及Seaborn使用(入门篇1)

    在数据分析过程中,数据及模型可视化是无可避免的,同时这也是展示我们数据分析成果的最佳方式.因此,熟悉掌握绘图库的使用,对精进我们的数据分析技能起着不可替代的作用. 今天,我们就来了解一下python强 ...

  7. Swift入门篇-基本类型(1)

    原文:Swift入门篇-基本类型(1) 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 今天遇到了一个很烦的事情是,早上10点钟打开电脑,一直都进入系统(我的系统  ma ...

  8. 【C/C++语言入门篇】-- 文件操作

    [C/C++语言入门篇]-- 文件操作 收藏 此文于2010-03-09被推荐到CSDN首页 如何被推荐? 最近实在是太忙了,这篇整整就推迟了1个月了,实在是对不起.之前本打算这个模块就结束了,文件操 ...

  9. 大火系列: Rust入门篇 mut

    Rust入门篇 &mut Hello World 使用 cargo new projectName --bin 创建一个工程 cargo build 和 cargo run命令 cargo配置 ...

  10. python sub 不区分大小写_Python网络爬虫入门篇

    1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. Python入门篇:https://www.cnblo ...

最新文章

  1. .net core中的高效动态内存管理方案
  2. C. 啊对对对 (南阳理工oj—21第二次招新赛)
  3. OpenShift 4 之AMQ Streams(3) - 用Kafka MirrorMaker在Kafka集群间复制数据
  4. day12--k近邻算法KNN
  5. 《信号与系统》4.11.2系统函数的幅频特性和相频特性分析 MATLAB实现
  6. idea社区版已经足够强大了
  7. python pygame 动画_pygame行走的小猫多帧动画演示程序
  8. 11210怎么等于24_所有能算24点的四个数,(4个数只能是1——10之间的数)我举个例:1,1,1,8.1,1,2,6.………………所有能算...
  9. 绿皮车里的温馨服务 情暖回家路
  10. api数据接口文档_接口文档示例(Taobao/jd/pinduoduo/开放接口调用)
  11. 利用Java SE基本知识是开发【学生信息管理系统】中
  12. CSS基础入门,导入方式,选择器
  13. SAP业务顾问必备的技术能力
  14. 2019轨道交通大会丨粤港澳大湾区地铁产业大会
  15. 免费开源的编辑器 - SciTE
  16. 傲梅分区助手v8.1.0 企业单文件免费版
  17. 解决测试过程中遇到的致命问题
  18. j计算机职称考试题库,2017职称计算机考试题库「附答案」
  19. mysql 原子自增_mysql自增锁_33
  20. LoRaWAN的激活与天线测试要点,LoRa设备开发参考指南(十八)

热门文章

  1. 重定向与转发的使用和区别
  2. C语言指针结构体详解,结构体指针,C语言结构体指针详解
  3. 场景解析和语义分割区别_语义分割概念及应用介绍
  4. python填充图像为方形
  5. SAP770系统FI模块配置(给科目表分配公司代码)
  6. notepad++ 使用JsonView来格式化json字符串
  7. 互联网新机遇: 移动社交电商将成为下一个风口?
  8. python qq群自动加入_Python实现向QQ群成员自动发邮件的方法
  9. 数字金字塔php,数字金字塔
  10. redis数据类型及操作