NVelocity模版引擎

需要引用外部的NVelocity.dll文件
///
///Person类 的摘要说明
///
public class Person
{
public Person()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public string Name { get; set; }
public string Gender { get; set; }
public string Email { get; set; }
public int Age { get; set; }
}

示例1

后台代码

<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using NVelocity.App;
using NVelocity.Runtime;
using NVelocity;
using System.IO;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/html";
//使用模版引擎
//一。创建模版引擎
//1.初始化模版引擎
VelocityEngine vEngine = new VelocityEngine();
//2.设置模版引擎初始化属性
 vEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, context.Request.MapPath("~/NVelocity/temp/"));//设置模版引擎默认的模版所在的根路径
    //3.初始化模版引擎
    vEngine.Init();
    //二。设置模版中使用的数据,将需要在模版中使用的数据都加到VelocityContext上下文对象
    //1.创建一个VelocityContext上下文对象
    VelocityContext vContext = new VelocityContext();
    //2.向context对象中设置数据
    vContext.Put("page_title", "这是我的第一个模版引擎页面");
    Person p = new Person() { Name = "顾毓婷", Age = 28, Email = "gyt@163.com", Gender = "女" };
    vContext.Put("page_content", p);
    //三。合并模版引擎要加载的模版文件与VelocityContext对象,合并完成后模版引擎内部就会对模版与数据进行整合,并生成新的内容
    using(StringWriter strWriter=new StringWriter ())
    {
        vEngine.MergeTemplate("HTMLPage.htm", "UTF-8", vContext, strWriter);//第一个是模版的文件名
        //四。把生成好的新字符串响应给用户
        context.Response.Write(strWriter);
    }
}
public bool IsReusable {
    get {
        return false;
    }
}

}

前台模版页面代码

页面名字是HTMLPage.htm

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>$page_title</title>
</head>
<body>
<ul>
    <li> 姓名:$page_content.Name</li>
     <li> 年龄:$page_content.Age</li>
      <li> 性别:$page_content.Gender</li>
       <li> 邮箱:$page_content.Email</li>
</ul>
</body>
</html>

示例2

后台代码

<%@ WebHandler Language="C#" Class="Handler2" %>

using System;
using System.Web;
using NVelocity.App;
using NVelocity.Runtime;
using NVelocity;
using System.IO;
using System.Collections.Generic;
public class Handler2 : IHttpHandler {
public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "text/html";
    //创建模版对象
    //1创建模版对象
    VelocityEngine vEngine = new VelocityEngine();
    //2设置属性
   vEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, context.Request.MapPath("~/NVelocity/temp/"));
    //3初始化
    vEngine.Init();
    //二。设置  VelocityContext  数据
    //1创建VelocityContext  对象
    VelocityContext vContext = new VelocityContext();
    List<Person> list=new List<Person> (){
    new Person(){Name="胡飞行",Age=19,Email="21311@163.com",Gender="男"},
    new Person(){Name="胡飞行",Age=19,Email="21311@163.com",Gender="男"},
    new Person(){Name="胡飞行",Age=19,Email="21311@163.com",Gender="男"},
    new Person(){Name="胡飞行",Age=19,Email="21311@163.com",Gender="男"},
    };
    //2设置数据
    vContext.Put("pList", list);
    //3合并模版文件与VelocityContext上下文对象
    using (StringWriter strWriter = new StringWriter()) {
        vEngine.MergeTemplate("HTMLPage2.htm", "utf-8", vContext, strWriter);
        //4向客户端写入
        context.Response.Write(strWriter);
    }
}
public bool IsReusable {
    get {
        return false;
    }
}
}

前台模版页面代码

页面的代码里不能有注释,这里是为了理解

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0">
    <thead>
    <tr>
    <th>姓名</th>
    <th>性别</th>
    <th>年龄</th>
    <th>邮箱</th>
    </tr>
    </thead>
    <tbody>
    #foreach($p in $pList)<!--代表循环-->
    #even<!--代表偶数行-->
    <tr style="background-color:Blue"><td>$p.Name</td><td>$p.Age</td><td>$p.Email</td><td>$p.Gender</td></tr>
    #odd<!--代表奇数行-->
     <tr style="background-color:Green"><td>$p.Name</td><td>$p.Age</td><td>$p.Email</td><td>$p.Gender</td></tr>
     #each<!--代表每行都-->
     <tr style="background-color:Gray"><td cplspan='4'></td></tr>
    #end
    </tbody>
</table>
</body>
</html>
posted on 2017-08-18 01:06  NE_STOP  阅读(1)  评论(0编辑  收藏  举报  来源