NVelocity 在.Net的三种用法
NVelocity 使用文件型模板例子
using NVelocity;
using NVelocity.App;
using NVelocity.Runtime;
VelocityEngine vltEngine = new VelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,
Server.MapPath("~/Template/"));
vltEngine.Init();
VelocityContext
vltContext = new VelocityContext();
vltContext.Put("PageTitle", "文件模板例子");
vltContext.Put("ListUsers", listUsers);
Template vltTemplate =
vltEngine.GetTemplate("Default.htm");
System.IO.StringWriter vltWriter = new
System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
Response.Write(vltWriter.GetStringBuilder().ToString());
NVelocity 使用资源文件模板例子
using NVelocity;
using NVelocity.App;
using NVelocity.Runtime;
IList<string> listAssembly = new List<string>();
//
添加程序集名称
listAssembly.Add("LibTest");
VelocityEngine
vltEngine = new VelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "assembly");
vltEngine.SetProperty("assembly.resource.loader.class",
"NVelocity.Runtime.Resource.Loader.AssemblyResourceLoader; NVelocity"); // 固定写法-
-!
vltEngine.SetProperty("assembly.resource.loader.assembly",
listAssembly);
vltEngine.Init();
VelocityContext
vltContext = new VelocityContext();
vltContext.Put("PageTitle",
"资源模板例子");
vltContext.Put("ListUsers", listUsers);
Template vltTemplate = vltEngine.GetTemplate("LibTest.Resources.Default.htm");
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
Response.Write(vltWriter.GetStringBuilder().ToString());
NVelocity 使用字符串模板例子
using NVelocity;
using NVelocity.App;
using NVelocity.Runtime;
System.Text.StringBuilder builder = new System.Text.StringBuilder();
builder.Append("#foreach($u in $ListUsers)\r\n" +
"#beforeall\r\n" +
"<table border=\"0\" cellpadding=\"10\"
cellspacing=\"10\">" +
"<tr><td>Name</td><td>Sex</td><td>City</td></tr>"
+
"#each\r\n" +
"<tr>" +
"<td>$u.Name</td>" +
"<td>$u.Sex</td>" +
"<td>$u.City</td>" +
"</tr>" +
"#afterall\r\n" +
"</table>" +
"#nodata\r\n" +
"暂无用户资料\r\n" +
"#end");
VelocityEngine
vltEngine = new VelocityEngine();
vltEngine.Init();
VelocityContext vltContext = new VelocityContext();
vltContext.Put("PageTitle", "字符串模板例子");
vltContext.Put("ListUsers",
listUsers);
System.IO.StringWriter vltWriter = new
System.IO.StringWriter();
vltEngine.Evaluate(vltContext, vltWriter,
null, builder.ToString());
Response.Write(vltWriter.GetStringBuilder().ToString());
NVelocity 在.Net的三种用法的更多相关文章
- using 的三种用法
using 有哪三种用法? 1)引入命名空间. 2)给命名空间或者类型起别名. 3)划定作用域.自动释放资源,使用该方法的类型必须实现了 System.IDisposable接口,当对象脱离作用域之后 ...
- Js闭包常见三种用法
Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可 ...
- .NET(c#)new关键字的三种用法
前几天去家公司面试,有一道这样的题:写出c#中new关键字的三种用法,思前想后挖空心思也只想出了两种用法,回来查了下msdn,还真是有第三种用法:用于在泛型声明中约束可能用作类型参数的参数的类型,这是 ...
- SQL、LINQ、Lambda 三种用法(转)
SQL.LINQ.Lambda 三种用法颜色注释: SQL LinqToSql Lambda QA1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname, ...
- c# new关键字的三种用法
三种用法如下: 在 C# 中,new 关键字可用作运算符.修饰符或约束. 1)new 运算符:用于创建对象和调用构造函数. 2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成 ...
- java中 this 的三种用法
Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...
- 子查询。ANY三种用法。ALL两种用法。HAVING中使用子查询。SELECT中使用子查询。
子查询存在的意义是解决多表查询带来的性能问题. 子查询返回单行多列: ANY三种用法: ALL两种用法: HAVING中的子查询返回单行单列: SELECT中使用子查询:(了解就好,避免使用这种方法! ...
- java中 this 关键字的三种用法
Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...
- C++学习---- virtual的三种用法
virtual用法一:多态 #include<iostream> using namespace std; class A{ public: virtual void display(){ ...
随机推荐
- Lua 练习中的Bug 以及日志
使用 Lua 中的table.getn获得数组的table的长度:运行失败-- > t ={1,2,3 } > print(table.getn(t)) stdin:1: attempt ...
- jQuery基础知识— 获得内容和属性
jQuery拥有可操作HTML元素和属性的方法. 获得内容: text()--设置或返回所选元素的文本内容 html()--设置或返回所选元素的内容(包括HTML标记) val()--设置或返回表单字 ...
- Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
问题提示:Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace. ...
- Toast提示信息
用Toast来作为操作成功以及用户误操作等等的提示,非常的简单.直接上代码: 创建方式一: ps: 此处没有设置toast的其他属性,均使用默认的风格(个人觉得默认的风格除了字体比较小之外 还是挺好看 ...
- c语言结构体保存并输出学生信息
最近在学习数据结构,巩固下c语言. #include<stdio.h> /*定义结构体student并设置别名stud*/ /*typedef struct student{ int nu ...
- 4.python中的用户交互
学习完如何写'hello world'之后,我们还是不太满意,因为这样代码就写死了,以后运行的时候都只打印一局固定的话而已. 但是,我想在程序运行后,自己手动输入内容怎么办,此时就要学习如何使用用户交 ...
- 浅谈objective—C管理内存
这段时间被导师催着论文,调试各种BUg,也是醉了,发现很大程度上,内存出错,栈溢出,各种悲剧.那么今天就和大家一起对OC的内存管理来个探微吧.Objective-C使用一个保留计数记录了我们所创建的所 ...
- TAT 前端突击队 第四关 题目 腐蚀的画
腐蚀的画 1.一个漂亮的画作在经过几千年岁月的洗礼下,部分地方已经被腐蚀了,像一个孤独的老人,满脸爬满了皱纹.2.但在一个晚上,老王突然发现,这些腐蚀的部分中,隐藏着岁月留下的密秘.请你帮助老王寻找这 ...
- esp和ebp详解
最近在研究栈帧的结构,但总是有点乱,所以写了一个小程序来看看esp和ebp在栈帧中的作用.这个程序如下: 这个程序很简单,就是求两个数的值,然后输出即可.所以首先把它用gcc编译链接成a.out,进入 ...
- win8.1上安装vc6
win8.1上安装vc6 1.以管理员方式运行SETUP.EXE,然后一路下一步 2.这里需要一点点耐心,等10分钟左右就能过去,电脑会比较卡,有点像假死,还是没有死掉,等等就好了 3.这里选择vc6 ...