NVelocity模版引擎
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>
NVelocity模版引擎的更多相关文章
- Asp.net NVelocity 模版引擎
NVelocity.dll是Java中常用的一个模版,下面是常用的模版引擎 1,返回string类型的html代码 /// <summary> /// 获取html模版 /// </ ...
- 模版引擎(NVelocity)开发
在net中用模版开发,在handler中用到了大量的html代码.为解决这个问题,我可以采用模版引擎(NVelocity)进行开发.1.首先需要将NVelocity.dll文件放入项目,其次引用.2. ...
- 构建自己的PHP框架--构建模版引擎(1)
前段时间太忙,导致好久都没有更新博客了,今天抽出点时间来写一篇. 其实这个系列的博客很久没有更新了,之前想好好规划一下,再继续写,然后就放下了,今天再捡起来继续更新. 今天我们来说一下,如何构建自己的 ...
- Smarty模版引擎的原理
Smarty是一个使用php写出来的模版引擎,用来将原本与html代码混杂在一起PHP代码逻辑分离,实现前后端分离. Smarty模板优点: 1. 速度:采用Smarty编写的程序可以获得最大速度的提 ...
- js模版引擎handlebars.js实用教程——为什么选择Handlebars.js
返回目录 据小菜了解,对于java开发,涉及到页面展示时,比较主流的有两种解决方案: 1. struts2+vo+el表达式. 这种方式,重点不在于struts2,而是vo和el表达式,其基本思想是: ...
- 【转】NVelocity模板引擎初学总结
转自:http://sunxitao88.blog.163.com/blog/static/68314439200861963326251/ 前不久,接触到.NET下的MVC-MonoRail,它推荐 ...
- 简单JavaScript模版引擎优化
在上篇博客最简单的JavaScript模板引擎 说了一下一个最简单的JavaScript模版引擎的原理与实现,作出了一个简陋的版本,今天优化一下,使之能够胜任日常拼接html工作,先把上次写的模版函数 ...
- Symfony2模版引擎使用说明手册
一.基本使用 {{ demo }}输出一个demo变量; {% func %}通常是包含一个twig函数例如 for; 举个for循环的例子: {% for i in 0..10 %} <em& ...
- PHP模版引擎 – Twig
在网站开发过程中模版引擎是必不可少的,PHP中用的最多的当属Smarty了.目前公司系统也是用的Smarty,如果要新增一个页面只需把网站的头.尾和左侧公共部分通过Smarty的include方式引入 ...
- Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs
目录 前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set(name,value) app.use ...
随机推荐
- study Python3【2】导入模块
import 与 from...import 在 python 用 import 或者 from...import 来导入相应的模块. 将整个模块(somemodule)导入,格式为: import ...
- 【Legged gym】关于Legged gym用到的roll_out_storages的batch的解析和一些PPO算法层面.config文件里参数的说明
1. 前言 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流. 如有不对之处,欢迎评论区指出错误,你我共同进步学习! 2. 正文 2.1 yield 最开始发现于:rollout_stor ...
- Cookie,Session与Token
参考资料 水平有限,欢迎交流!仅做学习交流使用 一定要看,非常透彻![Cookie.Session.Token究竟区别在哪?如何进行身份认证,保持用户登录状态?] 黑马jwt详解 Javaweb程序设 ...
- 康谋分享 | 仿真驱动、数据自造:Anyverse巧用合成数据重构智能座舱
随着汽车向智能化.场景化加速演进,智能座舱已成为人车交互的核心承载.从驾驶员注意力监测到儿童遗留检测,从乘员识别到安全带状态判断,座舱内的每一次行为都蕴含着巨大的安全与体验价值. 然而,这些感知系统要 ...
- 一个用原生JavaScript实现的日历小工具,开箱即用
---------------- 用原生JavaScript实现的一个日历小工具,开箱即用,可用于做签到记录.日程等显示控件,具体自己发挥啦 效果如下图,可以自行美化 >>点击体验< ...
- 备份一个http/https请求,用的比较多的POST json数据
var data = new object[] { new { sn = SN, mac = Mac } }; var jobj = await Task.Run(() => { try { u ...
- AI Agent离我们有多远?认知革命的开始(上篇)
认知是成本最低的对冲. --张三思维进化论 深夜3点,我与AI Agent的惊人对话 2025年的一个深夜,我习惯性地打开电脑处理一些工作.身为一个从大厂转型的自由职业者,夜晚往往是我效率最高的时段. ...
- 零基础搭建AI作曲工具:基于Magenta/TensorFlow的交互式音乐生成系统
引言:当AI遇见莫扎特 "音乐是流动的建筑",当人工智能开始理解音符间的数学规律,音乐创作正经历着前所未有的范式变革.本文将手把手教你构建一套智能作曲系统,不仅能够生成古典钢琴小品 ...
- 点赞背后的技术大冒险:分布式事务与SAGA模式
title: 点赞背后的技术大冒险:分布式事务与SAGA模式 date: 2025/05/07 00:12:40 updated: 2025/05/07 00:12:40 author: cmdrag ...
- 一文速通Python并行计算:10 Python多进程编程-进程之间的数据共享-基于共享内存和数据管理器
一文速通 Python 并行计算:10 Python 多进程编程-进程之间的数据共享-基于共享内存和数据管理器 摘要: Python 多进程通信中,共享内存通过 Value 和 Array 实现高效数 ...