初见NVelocity模板引擎
2024-08-26 05:10:36
//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;
}
}
}
最新文章
- js中的一些容易混淆的方法!
- 怎样记住Integer的最大值(有趣的思维和搞笑的回答)
- mysql-异常Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1
- C#利用Web Service实现短信发送(转)
- 百度定位API报错:leaked ServiceConnection com.baidu.location.LocationClient$1@426122f0
- 关于CCSprite不能及时显示的问题
- 安装pgadmin3
- myeclipse web 包名保留字与servlet冲突
- Maven配置jar(war)包自动打包上传Maven服务器的配置
- Rouh set 入门知识2(基础定义篇)
- bzoj 1927 [Sdoi2010]星际竞速(最小费用最大流)
- Corporate Identity - HDU 2328(多串求共同子串)
- 使用zTree控件制作的表格形式的树形+数据菜单
- 13 获取外部数据库 以及数据库游标适配器(SimpleCursorAdapter)
- java开发中使用枚举表述数据字典
- jquery 删除table行,该如何解决
- js中的url地址用function函数调用
- Ajax初窥
- Zookeeper和分布式环境中的假死脑裂问题(转)
- tools-eclipse-002-常用插件
热门文章
- vue-cli3或者4中如何正确的使用public中的图片
- 数据库-第八章 数据库编程-8.4 ODBC编程
- switch-case与if-else的转换
- Blazor WebAssembly 修仙之途 - 组件与数据绑定
- 实现一个字符串匹配算法,从字符串 H 中,查找 是否存在字符串 Y ,若是存在返回所在位置的索引,不存在返回 -1(不基于indexOf/includes方法)
- HTML静态页面项目:英雄联盟官网网站 的实现
- Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)
- Java实现 蓝桥杯 算法提高 复数四则运算
- Java实现 蓝桥杯VIP 算法训练 连接字符串
- Java实现 蓝桥杯VIP 算法提高 聪明的美食家