前不久,接触到.NET下的MVC-MonoRail,它推荐使用的模板引擎就是NVelocity(目前由Castle Project项目组接手)
因此决定自学一下NVelocity的使用(抛开MonoRail)
--
首先:在Castle Project上下载一个CastleProject包,我下载的是CastleProject-1.0-RC3.msi
安装后,在其下的bin目录中可找到NVelocity.dll(NET项目中将用到),并将其复制出来放到我的测试WEB/BIN目录下
到castleproject上看了一下using it大致有四步:
先要引入以下名称空间:
using Commons.Collections;
using NVelocity;
using NVelocity.App;
using NVelocity.Context;
第一步:Creating a VelocityEngine也就是创建一个VelocityEngine的实例
VelocityEngine velocity = new VelocityEngine(); //也可以使用带参构造函数直接实例
ExtendedProperties props = new ExtendedProperties();
velocity.Init(props);

第二步:Creating the Template加载模板文件
这时通过的是Template类,并使用VelocityEngine的GetTemplate方法加载模板
Template template = velocity.GetTemplate(@"path/to/myfirsttemplate.vm");

第三步:Merging the template整合模板
VelocityContext context = new VelocityContext();
context.Put("from", "somewhere");
context.Put("to", "someone");
context.Put("subject", "Welcome to NVelocity");
context.Put("customer", new Customer("John Doe") );

第四步:创建一个IO流来输出模板内容推荐使用StringWriter(因为template中以string形式存放)
StringWriter writer = new StringWriter();
template.Merge(context, writer);
Response.Write(writer.ToString());

---通过上述步骤就可以轻松的使用NVelocity模板引擎的技术了
有没有发现最后的Response.Write(writer.ToString())?
这个是直接输入到页面上如果我们不直接输出到页面上,而是把它写入到一个文件中呢?
生成静态页--是的,这是让大家都心动的
下面的代码是我第一个练习:

usingusingusingusingusing///<summary>
//////</summary>
publicpartialclassprotectedvoid Page_Load(object//创建NVelocity引擎的实例对象
        VelocityEngine velocity =new//初始化该实例对象
        ExtendedProperties props =new ExtendedProperties();
        props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file");
          //可换成:props.AddProperty("resouce.loader","file"),以下的同道理
        props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, Path.GetDirectoryName(Request.PhysicalPath));
        props.AddProperty(RuntimeConstants.INPUT_ENCODING, "gb2312");
        props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "gb2312"//从文件中读取模板
        Template temp = velocity.GetTemplate("myTemplate.html"=new VelocityContext();
        context.Put("from", "Sichuan""to", "hainan""subject", "welcome to nvelocity""name", "McJeremy"//合并模板
        StringWriter writer =new//velocity.MergeTemplate(context, writer);
        temp.Merge(context, writer);
//输入
        Response.Write(writer.ToString().Replace("\r\n", "<br/>"
}
以下是生成静态页的练习:

usingusingusingusingusing///<summary>
//////</summary>
publicpartialclassprotectedvoid Page_Load(object//创建NVelocity引擎的实例对象
        VelocityEngine velocity =new//初始化该实例对象
        ExtendedProperties props =new ExtendedProperties();
        props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file");
        props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, Path.GetDirectoryName(Request.PhysicalPath));
        props.AddProperty(RuntimeConstants.INPUT_ENCODING, "gb2312");
        props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "gb2312"//从文件中读取模板
        Template temp = velocity.GetTemplate("myTemplate.html"=new VelocityContext();
        context.Put("from", "Sichuan""to", "hainan""subject", "welcome to nvelocity""name", "McJeremy"//合并模板
        StringWriter writer =new//velocity.MergeTemplate(context, writer);
        temp.Merge(context, writer);
//生成静态页
using (StreamWriter writer2 =new StreamWriter(Server.MapPath("/") +"test.html"), false, Encoding.UTF8, 200{
            writer2.Write(writer);
            writer2.Flush();
            writer2.Close();
        }

posted on 2008-06-25 17:48 McJeremy&Fan 阅读(103) 评论(0)  编辑 收藏 所属分类: ASP.NET(C#)

[使用Ctrl+Enter键可以直接提交]
导航统计常用链接留言簿我的标签最新随笔搜索

支持,收藏 --金色海洋(jyk) 可能是你在页面某个地方重新定义了一个变量名len吧,否则就算你用typeof(len)也应该是function --孤蝶傲飞 究其原因是因为用来排序的列重复了,当数据正好重复在分界点上时,Access不知道任何取哪几条,于是它就把所有排序列重复的数据也全都带上了 --随风飘扬 --斧头帮少帮主 顶~!! --Lemmon Tea

阅读排行榜评论排行榜60天内阅读排行

【转】NVelocity模板引擎初学总结的更多相关文章

  1. NVelocity模板引擎学习笔记

    NVelocity模板引擎学习笔记 学习模板引擎有一段时间现在做一些总结

  2. Nvelocity模板引擎开发网页

    在ASP.NET网站开发中,我们要做许多的网页,如果多个网页的内容框架有些重复使用,我们用NVelocity模板引擎,就可以把相同的部分html代码单独放在一个文件中就行了,当要使用的时候,只需使用# ...

  3. Asp.net动态页面静态化之初始NVelocity模板引擎

    Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...

  4. 初见NVelocity模板引擎

    //using NVelocity.App; //using NVelocity; //using NVelocity.Runtime; VelocityEngine vltEngine = new ...

  5. NVelocity模板引擎的使用

    第一种使用方法直接赋值: VelocityEngine vltEngine = new VelocityEngine(); vltEngine.SetProperty(RuntimeConstants ...

  6. nvelocity模板引擎

    using NVelocity.App;using NVelocity.Runtime;using NVelocity; VelocityEngine vltEngine = new Velocity ...

  7. C#模板引擎NVelocity实战项目演练

    一.背景需求 很多人在做邮件模板.短信模板的时候,都是使用特殊标识的字符串进行占位,然后在后台代码中进行Replace字符串,如果遇到表格形式的内容,则需要在后台进行遍历数据集合,进行字符串的拼接,继 ...

  8. 模板引擎Nvelocity实例

    前言 最近一直忙于工作,没时间来管理博客,同时电脑也不给力,坏了一阵又一阵,最后还是去给修理了,这不刚一回来迫不及待的就写一篇文章来满足两个月未写博客的紧迫感. Nvelocity 关于nveloci ...

  9. ASP.NET 模板引擎 - NVelocity

    1,HTML的Form表单数据按Button提交数据以后,由 Action 指定的服务器端处理程序(.ashx)进行处理后 ,再响应的浏览器. 2,我们把 HTML的表单,写到 .ashx 一般处理程 ...

随机推荐

  1. SparkConf加载与SparkContext创建(源码阅读四)

    sparkContext创建还没完呢,紧接着前两天,我们继续探索..作死... 紧接着前几天我们继续SparkContext的创建: 接下来从这里我们可以看到,spark开始加载hadoop的配置信息 ...

  2. 总结一下响应式设计的核心CSS技术Media(媒体查询器)的用法。(转)

    <meta http-equiv="X-UA-Compatible" content="IE=edge"><!--兼容ie-->< ...

  3. Laravel 使用多个数据库的问题。

    这几天在使用Laravel 开发一个系统.这个系统连2个数据库.一个名为blog,一个名为center. center 数据库的作用是作为用户中心.可能会有其他几个系统相连,属于公用数据库.主要是用来 ...

  4. Python format格式化输出

    http://www.jb51.net/article/63672.htm 推荐参考 >>> '{0},{1}'.format('hello','python') 'hello,py ...

  5. vmware 修改IP 提示子网掩码错误~

    我打开[编辑]->[虚拟网络编辑器]菜单 修改网络设置 提示 子网掩码错误 如下图所示 上网查询,使用如下方法解决问题 这个虚拟网络编辑器是给你添加网卡的,你添加vmnet1就是在你真实的电脑上 ...

  6. 基于JS功能强大的日期插件Kalendae

    开发中需要一个日期插件,可以在zepto下使用,可以选择日期段,可以设置不可选日期 找到一个完全满足的,并且基于JS不依赖于任何库. 在线演示:http://chipersoft.com/Kalend ...

  7. sqlserver表分区

    参考:http://www.cnblogs.com/knowledgesea/p/3696912.html 及百度搜索sqlserver表分区 create partition function sg ...

  8. oracle ebs应用产品安全性-交叉验证规则

    转自: http://blog.itpub.net/298600/viewspace-625138/ 定义: Oracle键弹性域可以根据自定义键弹性域时所定义的规则,执行段值组合的自动交叉验证.使用 ...

  9. Python体验(09)-图形界面之Pannel和Sizer

    import wx class Form(wx.Frame): def __init__(self,parent,ID,title): wx.Frame.__init__(self,parent,ID ...

  10. Mutex

    #include "stdafx.h" #include <string> #include <iostream> #include <Windows ...