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 ...
随机推荐
- 调用 restful的api的方法
var // myurl : string; tmpstr : String;// string; RespData :TStringStream; sendData : TStringList; j ...
- DotNetGuide 突破了 8K + Star,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库!
前言 转眼之间维护DotNetGuide(全面的C#/.NET/.NET Core学习.工作.面试指南知识库)已经持续超过了4年多的时间,Commit提交数也超过1400+,在前几天在 GitHub ...
- cursor的mcp服务器安装(nodejs,npx安装和uv工具安装)
一.前言: 1.近期MCP服务器非常火爆,作为LLM大模型的通用工具手脚,MCP可以帮助LLM大模型实现更好的功能.本人经常使用cursor来进行代码的编辑,正巧cursor在0.47版本之后,MCP ...
- Ruby+Appium+testunit实现app自动化demo
1.安装对应库 gem install test-unit gem install appium_lib 2.编写代码 代码如下: require 'appium_lib' require 'test ...
- 使用PyMuPDF对pdf文件插入文字时 遇到配置本地的字体文件缺仍然使用默认Helvetica字体问题
背景 昨天收到的新需求,一份文件从其他部门发起,进行一些文字填写后盖章,再到我们部门,我们接收到的是pdf文件,所以需要在pdf文件中进行修改,插入当日日期等文字.但有要求字体必须和原文档字体相同. ...
- kubernetes dashboard web控制台调研
背景 kubernetes 是目前最流行的容器化系统,管理的方式一般都是最基础的kubectl命令客户端进行管理,但是对与一些没有基础的研发人员并不是很友好,所以我们需要一些web控制台,类似于云厂商 ...
- 题解:CF361B Levko and Permutation
前置芝士--最大公约数 - OI Wiki 题目其实很简单,我们可以知道一些最大公约数的性质: 有一个数 xxx,则: gcd(x,x−1)=1gcd(1,x)=1\gcd(x,x-1)=1 \\ ...
- 【一步步开发AI运动APP】八、自定义姿态动作识别检测——之姿态相似度比较
之前我们为您分享了[一步步开发AI运动小程序]开发系列博文,通过该系列博文,很多开发者开发出了很多精美的AI健身.线上运动赛事.AI学生体测.美体.康复锻炼等应用场景的AI运动小程序:为了帮助开发者继 ...
- 25.9K star!AI一键生成高清短视频,这个开源神器让内容创作起飞!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "MoneyPrinterTurbo 是基于AI大模型的全自动短视频生成工具,只需 ...
- Web前端入门第 48 问:纯 CSS 使用 column 属性实现瀑布流布局
什么是瀑布流? 看一张图,以下图片来源于花瓣网截图: 如上图所示,瀑布流就是让内容按列显示,自动填充空白. 使用 column 实现瀑布流 源码: <div class="masonr ...