前不久,接触到.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. OAF_开发系列22_实现OAF条形码BarCode

    20150717 Created By BaoXinjian

  2. 获得、修改 SQL Server表字段说明

    SELECT ( then d.name else '' end) 表名, a.colorder 字段序号, a.name 字段名, g.[value] AS 字段说明 FROM syscolumns ...

  3. debian8 Apache 更改根目录

    进入配置文件,路径为:/etc/apache2/sites-available/000-default.conf 然后找到DocumentRoot /var/www/html ,将其更改为 Docum ...

  4. exp导出做成批处理注意事项

    不能叫exp.bat,会一直显示导出这句话. 出现EXP-00106: 数据库链接口令无效:是因为http://blog.csdn.net/hzfu007/article/details/189823 ...

  5. [DFNews] Fire-Eye与Fox IT联合推出Cryptolocker解锁网站

    Cryptolocker是臭名昭著的勒索程序,使用AES加密后密钥回传,用户除了缴纳赎金之外基本无法解密数据. 近日,知名安全公司Fire-Eye与Fox IT联合推出了针对该勒索程序的解锁网站 ht ...

  6. Twisted

    Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如网络协议,线程,数据库管理,网络操作,电子邮件等 事件驱动 一,注册事件 二,触发事件 自定义事件框架  event_fram.py # ...

  7. 关于Oracle出现listener refused the connection with the ORA-12505错误,解决方案

    出现listener refused the connection with the ORA-12505错误,解决方案: 1.首先重启一下电脑,释放被占用的1521端口 2.重启后打开Oracle D ...

  8. AndroidManifest.xml的android:name是否带.的区别

    android项目里面的AndroidManifest.xml,会有这样的定义        <activity android:name=".Main"           ...

  9. java httpclient cookie

    BasicCookieStore cookieStore = new BasicCookieStore();BasicClientCookie cookie = new BasicClientCook ...

  10. javascript 取整,取余数

    1.丢弃小数部分,保留整数部分 parseInt(5/2) 2 2.向上取整,有小数,则整数部分加1 Math.ceil(5/2) 3 3.四舍五入 Math.round(5/2) 3 4.向下取整 ...