1.简单替换
##这是注释
Wellcome ${userName}! Now:$date

2.申明变量:
#set( $iAmVariable = "good!" )
Welcome $name to Javayou.com!
today is $date.
$iAmVariable

3.if语句:
#set ($admin = "admin")
#set ($user = "user")
#if ($admin == $user)
Welcome admin!
#else
Welcome user!
#end

4.遍历对象:
#foreach( $product in $list )
<li>$product</li>
#end

5.自定义对象:
#foreach( $s in $students )
<$velocityCount> No:$s.No, Address: $s.Address

#end

6.标签嵌套:
#foreach ($element in $list) 
--外部循环-- 
    $velocityCount:This is $element.
--内部循环--
#foreach ($element in $list)
      $velocityCount:This is $element.
#end
--内部循环--
--外部循环--
#end

7.调用自定义对象方法:
#foreach( $s in $students )
<$velocityCount> $s.SayHello();

#end

  1. using System.IO;
  2. using NVelocity.App;
  3. using NVelocity.Context;
  4. using NVelocity.Runtime;
  5. namespace NVelocity
  6. {
  7. /// <summary>
  8. ///     NVelocity模板工具类 VelocityHelper
  9. /// </summary>
  10. public class VelocityHelper
  11. {
  12. private IContext _context;
  13. private VelocityEngine _velocity;
  14. private string _templateName;
  15. /// <summary>
  16. ///     构造函数
  17. /// </summary>
  18. /// <param name="templatDir">模板文件夹路径</param>
  19. /// <param name="templateName">模板文件名</param>
  20. public VelocityHelper(string templatDir, string templateName)
  21. {
  22. Init(templatDir);
  23. _templateName = templateName;
  24. }
  25. /// <summary>
  26. ///     无参数构造函数
  27. /// </summary>
  28. public VelocityHelper()
  29. {
  30. }
  31. /// <summary>
  32. /// 设置模板文件夹
  33. /// </summary>
  34. /// <param name="templatDir"></param>
  35. public void SetTemplateDirPath(string templatDir)
  36. {
  37. Init(templatDir);
  38. }
  39. /// <summary>
  40. /// 设置模板文件
  41. /// </summary>
  42. /// <param name="templateName"></param>
  43. public void SetTemplateFileName(string templateName)
  44. {
  45. _templateName = templateName;
  46. }
  47. /// <summary>
  48. ///     初始化NVelocity模块
  49. /// </summary>
  50. /// <param name="templatDir">模板文件夹路径</param>
  51. public void Init(string templatDir)
  52. {
  53. //创建VelocityEngine实例对象并设置初始化VelocityEngine
  54. _velocity = new VelocityEngine();
  55. _velocity.SetProperty(RuntimeConstants_Fields.RESOURCE_LOADER, "file");
  56. _velocity.SetProperty(RuntimeConstants_Fields.FILE_RESOURCE_LOADER_PATH, templatDir);
  57. _velocity.SetProperty(RuntimeConstants_Fields.INPUT_ENCODING, "utf-8");
  58. _velocity.SetProperty(RuntimeConstants_Fields.OUTPUT_ENCODING, "utf-8");
  59. _velocity.Init();
  60. //为模板变量赋值
  61. _context = new VelocityContext();
  62. }
  63. /// <summary>
  64. ///     给模板变量赋值
  65. /// </summary>
  66. /// <param name="key">模板变量</param>
  67. /// <param name="value">模板变量值</param>
  68. public void Put(string key, object value)
  69. {
  70. if (_context == null)
  71. {
  72. _context = new VelocityContext();
  73. }
  74. _context.Put(key, value);
  75. }
  76. /// <summary>
  77. ///     渲染模板
  78. /// </summary>
  79. public string Render()
  80. {
  81. if (!string.IsNullOrEmpty(_templateName))
  82. {
  83. //从文件中读取模板
  84. Template template = _velocity.GetTemplate(_templateName);
  85. //合并模板
  86. var writer = new StringWriter();
  87. template.Merge(_context, writer);
  88. return writer.GetStringBuilder().ToString();
  89. }
  90. return "未指定模板文件!";
  91. }
  92. }
  93. }

完整Demo下载:http://download.csdn.net/detail/a497785609/5405089

相关资料:

掌握一种 C#/.Net 模板技术 — Velocity:http://unmi.cc/csharp-velocity-templat

Velocity初体验 http://tech.163.com/04/1230/03/18QP3L080009159J.html

NVelocity介绍,NVelocity中文手册文档及实例下载 http://tommyhu.cn/NVelocity/

Velocity简单语法及VelocityHelper封装的更多相关文章

  1. velocity基本语法

    一.基本语法 1."#"用于识别Velocity该脚本语句,这包括#set.#if .#else.#end.#foreach.#end.#iinclude.#parse.#macr ...

  2. Velocity常用语法详解

    果然公司用的东西跟平时学的东西不太一样,我们公司前台页面并不是我们熟悉的.html或者.jsp文件,而是很多人不知道的 .vm文件,其实只要我们理解了jsp文件,vm文件也就是一些基本语法不同而已. ...

  3. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. EL与Velocity基本语法总结:

    El(expression language): 基本语法点: $与{}搭配使用是常态取值 . 与[]的区别,后者可以取特殊值:- .等 支持一些基本的逻辑运算: && || > ...

  5. 编译原理简单语法分析器(first,follow,分析表)源码下载

    编译原理(简单语法分析器下载) http://files.cnblogs.com/files/hujunzheng/%E5%8A%A0%E5%85%A5%E5%90%8C%E6%AD%A5%E7%AC ...

  6. Velocity 基本语法

    Velocity 基本语法 Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上.Velocity 是 Apache 基金会的项目,开发的目 ...

  7. PHP简单语法

    PHP简单语法 声明变量 $var_name="1"; $var_num=1; $var_bool=true; var_dump"函数可以将我们的变量的数据类型显示出来. ...

  8. T-Sql(一)简单语法

    原文:T-Sql(一)简单语法 Sql Server是鄙人学习的第一种数据库,对Sql Server有一种特别的情感,下面就说一下Sql Server的简单语法,适用初学者. 1,创建数据库creat ...

  9. 10.1 ES6 的新增特性以及简单语法

    ES6 的新增特性以及简单语法  let 和 const 模板字符串 箭头函数 对象单体模式 es6面向对象 模块化  let 和 const 之前一直用 var 来声明变量,ES6 新增 let 和 ...

随机推荐

  1. 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return fal的区别

    今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时 ...

  2. .NET 常用框架

    1.Hangfire 2.Lucene.Net 3.Log4Net 4.Quartz.Net 5.Autofac 6.SqlSugar 7.NPOI 8.Senparc.Weixin.MP 9.Aut ...

  3. 如何在个人博客引擎 Hexo 中添加 Swiftype 搜索组件

    在您现在看到的我的博客站点,后台使用的是 Hexo 作为博客引擎,但是默认集成的搜索组件是进行 form 提交到 Google 进行搜索的,为了更好地体验,本文介绍如何在 Hexo 博客中集成 Swi ...

  4. Cache,MemCache,Application,Cookie等其它缓存汇总

    为了提高网页运行速度我们用到了各种缓存技术,今天就来汇总下,相信聪明的你也一定会有所收获的o(^▽^)o 1.Cache(PS:看见一个博客介绍的不错,我就直接Copy了) Cache 即高速缓存.那 ...

  5. kuangbin专题总结一 简单搜索

    A - 棋盘问题:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有 ...

  6. 【Python】[模块]使用模块,安装第三方模块

    一个.py文件就称之为一个模块(Model)按目录来组织模块的方法,称为包(Package)每一个包目录下面都会有一个__init__.py的文件内置函数1.使用模块 导入模块 import sys ...

  7. php环境的搭建

    Windows下php作为Apache的子模块加载 1.安装Apache后,找到httpd.conf文件,加入下列三行 #将php作为Apache的一个模块来处理LoadModule php5_mod ...

  8. LinuxMint 18 编译cm13.0 笔记

    1.安装依赖文件 sudo apt--dev libesd0-dev git-core gnupg flex bison gperf build-essential zip curl zlib1g-d ...

  9. String()与 toString()

    我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 1..toString()可以将所有的的数据都转换为字符串,但 ...

  10. 面向对象(Object-Oriented)

    面向对象 面向对象,即我们以对象为核心去实现我们的目的,对象顾名思义:万物皆对象,一个人,一条狗... 当我们通过对象处理一些事情时,会让我们的代码清晰明了,内部高聚合,对外低耦合,即封装的思想 相比 ...