掌握一种 C#/.Net 模板技术 — Velocity

前面写过一篇关于 Java 中使用 Velocity 模板的文章:掌握一种Java模板技术 -- Velocity,现在要考究一下 C# 中怎么使用相应的 nVelocity 模板。

当目光转移到了 C#/.Net 之后,但凡想要找个某个功能组件时都会联想到,曾经在 Java 中用过什么,.Net 中应该会有它相应的实现,例如 Spring.Net, nHibernate, iTextSharp,还有这里的 nVelocity,特点就是组件名一般是 .Net 结尾或 n 字打头。

还是依照原来的例子,从 http://sourceforge.net/projects/nvelocity/files/ 下载 nVelocity 组件,当前版本是 NVelocity-0.4.2.8580。下载后解压,在你的项目中引入 build 目录中的 NVelocity.dll,如果是 web 项目中用 nVelocity,可附加引入 NVelocity.Http.dll。

第一步:建立模板,模板语言的语法也基本一致的,如创建文件 HelloNVelocity.vm,把它放在 d:\tempalte\ 目录下,内容为:

第二步:加载模板,填充值,输出,HelloNVelocity.cs

执行后,控制台输出:

Unmi:您的 1000 号报销单在 2010年5月19日 已支付

代码逻辑与 Java 的 Velocity 组件的应用是完全一致的,加载模板->填充值->合并模板输出内容。

同时也要注意模板文件有中文的话要以 UTF-8 字符集保存,不然会出现乱码,需然默认的字符集仍然是 ISO8859-1。还应留意 Runtime.Resource.Loader Namespace 中,你可以从中体查出它支持哪些方式来加载模板文件:

1. FileResourceLoader    从文件系统加载模板文件
2. ResourceLocator        从文件系统或程序集中加载资源作为模板
3. DataSourceResourceLoader  从数据源中加载内容作为模板,奇怪的是这个类出现在源代码中,却未编译到 NVelocity.dll 中。

另外它的配置文件在 NVelocity.dll 的资源 Runtime\Defaults\nvelocity.properties 中。

NVelocity 使用了与 Velocity 保持一致的 VTL(Velocity Template Language) 语言,支持 #if、#foreach、#set、#include、#parse、#macro 等语法能处理你更复杂的数。

参考:1. .Net之NVelocity的三种用法
        2. 封装ASP.NET模板引擎NVelocity应用实例
        3. .NET模板引擎 NVelocity  其中有 NVelocity 的介绍和 VTL 语法说明

 

本文链接 https://yanbin.blog/csharp-velocity-templat/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

6 Comments
Inline Feedbacks
View all comments
xufenghui
xufenghui
7 years ago

难道不应该使用RazorEngine吗?

xufenghui
xufenghui
7 years ago
Reply to  Yanbin

难道不应该使用RazorEngine吗?

Alan
Alan
10 years ago

在网上搜.net模板,竟然搜到了你的博客,哈哈哈