//using NVelocity.App;
//using NVelocity;
//using NVelocity.Runtime;
VelocityEngine vltEngine = new VelocityEngine();//创建一个NVelocity对象
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");//设置属性:本地文件资源来源为file系统
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/template"));//设置属性:其文件路径,为所有模板根目录
vltEngine.Init();
VelocityContext vltContext = new VelocityContext();//创建一个NVelocity的上下文对象
vltContext.Put("errorMsg", "");//模板中站位的替换,其中key为string,value为obj。因此更适合于替换
Template vltTemplate = vltEngine.GetTemplate("template.html");//指定获取模板的文件名
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
string html = vltWriter.GetStringBuilder().ToString();
context.Response.Write(html);//最终响应

NVelocity是实用但比较土的模板替换引擎,不过已经可以适用于大多数项目的开发。以上是其常用的代码,要用直接复制黏贴即可。

按其规定,在html代码中的key应该以$开头。

强大之处:

1.可以直接传入一个对象,而在模板中再对对象的属性进行访问。

vltContext.Put("data", 对象);

在html中通过 $data.属性名 来获取对象属性。

2可以在模板中做一些简单的逻辑处理。

如:

条件分支:

#if(条件)

html语句

#else

html语句

#end

循环:

#foreach($变量 in $data)

html代码

#end

封装代码:

 using NVelocity;
using NVelocity.App;
using NVelocity.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Web
{
public class RenderHtml
{
public static string Render(string fileName, object data)
{
VelocityEngine vltEngine = new VelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/templates"));
vltEngine.Init();
VelocityContext vltContext = new VelocityContext();
vltContext.Put("data", data);
Template vltTemplate = vltEngine.GetTemplate(fileName);
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
string html = vltWriter.GetStringBuilder().ToString();
return html;
}
}
}

最新文章

  1. js中的一些容易混淆的方法!
  2. 怎样记住Integer的最大值(有趣的思维和搞笑的回答)
  3. mysql-异常Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1
  4. C#利用Web Service实现短信发送(转)
  5. 百度定位API报错:leaked ServiceConnection com.baidu.location.LocationClient$1@426122f0
  6. 关于CCSprite不能及时显示的问题
  7. 安装pgadmin3
  8. myeclipse web 包名保留字与servlet冲突
  9. Maven配置jar(war)包自动打包上传Maven服务器的配置
  10. Rouh set 入门知识2(基础定义篇)
  11. bzoj 1927 [Sdoi2010]星际竞速(最小费用最大流)
  12. Corporate Identity - HDU 2328(多串求共同子串)
  13. 使用zTree控件制作的表格形式的树形+数据菜单
  14. 13 获取外部数据库 以及数据库游标适配器(SimpleCursorAdapter)
  15. java开发中使用枚举表述数据字典
  16. jquery 删除table行,该如何解决
  17. js中的url地址用function函数调用
  18. Ajax初窥
  19. Zookeeper和分布式环境中的假死脑裂问题(转)
  20. tools-eclipse-002-常用插件

热门文章

  1. vue-cli3或者4中如何正确的使用public中的图片
  2. 数据库-第八章 数据库编程-8.4 ODBC编程
  3. switch-case与if-else的转换
  4. Blazor WebAssembly 修仙之途 - 组件与数据绑定
  5. 实现一个字符串匹配算法,从字符串 H 中,查找 是否存在字符串 Y ,若是存在返回所在位置的索引,不存在返回 -1(不基于indexOf/includes方法)
  6. HTML静态页面项目:英雄联盟官网网站 的实现
  7. Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)
  8. Java实现 蓝桥杯 算法提高 复数四则运算
  9. Java实现 蓝桥杯VIP 算法训练 连接字符串
  10. Java实现 蓝桥杯VIP 算法提高 聪明的美食家