NVelocity模板引擎
简介
NVelocity是一个基于.NET的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象。
语法
#include("head.htm") //引入文件
#parse("head.htm") //引入文件,与include不同的是,parse可以解析文件中的对象
#set ($age =20) //定义一个age变量,并通过set赋值
$age //展示变量age
//简单判断
#if($age>10)
懵懂骚年
#else
花样年华
#end
//复杂判断
#if( $age > 5 && $age <= 10 )
学英语,so easy!
#elseif( $age > 10 && $age <= 16)
作业多,怎么办
#elseif( $age > 16 && $age <= 19)
化学难!
#else
后来我们开始怀念上学了!
#end
//通过foreach循环遍历集合元素
#foreach($p in $Model.Persons)
$p.Name //姓名
$p.Age //年龄
$p.Phone //手机号
#end
NVelocity配合一般处理程序(简单使用)
<table class="doc-table" >
<thead><tr><td>姓名</td><td>年龄</td><td>手机号码</td></tr></thead>
<tbody>
#foreach($p in $Model.Persons) //通过$Model.Persons循环生成tr中内容
<tr><td>$p.Name</td><td>$p.Age</td><td>$p.Phone</td>
#end
</tbody>
</table>
public class Test : IHttpHandler {
public void ProcessRequest(HttpContext context) {
context.Response.ContentType = "text/html"; //设置输出html
List<person> list = new List<person>(); //循环生成泛型List<person>
for (int i = 1; i <= 10; i++) {
Person p = new Person() { Name = "长江" + i + "号", Age = 18 + i, Phone = (18801001618 + i).ToString() };
list.Add(p);
}
var data = new { Persons = list }; //将list绑定到匿名类的Persons属性
VelocityEngine vltEngine = new VelocityEngine(); //初始化NVeloity
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
//使用System.Web.Hosting命名空间下的HostingEnvironment.MapPath 指定模板文件所在的文件夹
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,HostingEnvironment.MapPath("~/templates"));
vltEngine.Init();
VelocityContext vltContext = new VelocityContext(); //NVelocity上下文
//给数据data指定一个key为"Model",在模板页(视图)中$Model,通过put方法放入NVelocityContext中
vltContext.Put("Model", data);
Template vltTemplate = vltEngine.GetTemplate("test.htm"); //获取模板所在的路径和文件名(相对于指定模板文件夹的位置)
StringWriter vltWriter = new StringWriter();
vltTemplate.Merge(vltContext, vltWriter); //内部通过Render解析遍历“Model”
string htm = vltWriter.GetStringBuilder().ToString();
context.Response.Write(htm);
}
}
//联系人
public class Person {
public string Name { get; set; }
public int Age { get; set; }
public string Phone { get; set; }
}
总结
1.通过NVelocity可以让我们页面设计人员可以只关注页面的显示效果,而又可以让我们.NET程序开发人员关注业务逻辑实现,为后期维护也提供很大的便利性;
2.NVelocity和一般处理程序相结合,可以避免复杂的aspx页面生命周期;
作者:秋壶冰月
出处:
http://www.cnblogs.com/qq0827
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给原文链接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号