Nvelocity模板引擎开发网页
在ASP.NET网站开发中,我们要做许多的网页,如果多个网页的内容框架有些重复使用,我们用NVelocity模板引擎,就可以把相同的部分html代码单独放在一个文件中就行了,当要使用的时候,只需使用#include("文件名")加以引用就行了,这样就给我们开发网站省下不少时间。
示例:
Html页代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
我的姓名是$p.Name 我的年龄是$p.Age<br />
我的父亲的名字是$p.Father.Name 我父亲的年龄是$p.Father.Age
$m.tom
<ul>
#foreach($star in $starlist)
#if($star.Age>54)
<li style="color:red">名字:$star.Name年龄:$star.Age</li>
#else
<li style="color:green">名字:$star.Name年龄:$star.Age</li>
#end
#end
</ul>
<p>版权:版权归本网站所有,侵权后果自负。</p>
</body>
</html>
这个示例,我将一个网页文件分为三部分,在一般网页的中,头部的信息,和尾部的信息都是相同的,那么就可以把这些相同代码单独放在两个不同的html格式的网页文件中,当开发其它的网页需要使用这个的时候,使用#include加以引用就行了。
本次使用ashx页相结合html页。
ashx代码
public class _01 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Class1 class1 = new Class1();
class1.Name = "小狗";
class1.Age = 22;
Class1 dad = new Class1();
dad.Name = "小猫";
dad.Age = 52;
class1.Father = dad;
List<Class1> list = new List<Class1>();
list.Add(new Class1 {Name="刘德华",Age=55 });
list.Add(new Class1 {Name="张学友",Age=54 });
Dictionary<string,string>dict=new Dictionary<string,string>();
dict["tom"] = "哈佛";
context.Response.ContentType = "text/html";
VelocityEngine vltEngine = new VelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/HtmTemplates"));//模板文件所在的文件夹
vltEngine.Init();
VelocityContext vltContext = new VelocityContext();
vltContext.Put("p", class1);//设置参数,在模板中可以通过$data来引用
vltContext.Put("m",dict);
vltContext.Put("starlist",list);
Template vltTemplate = vltEngine.GetTemplate("htm01.html");
System.IO.StringWriter vltWriter = new System.IO.StringWriter();
vltTemplate.Merge(vltContext, vltWriter);
string html = vltWriter.GetStringBuilder().ToString();
context.Response.Write(html);
}
public bool IsReusable
{
get
{
return false;
}
}
}
以上加上红色背景的为NVelocity模板引擎代码。必须要加上。此模板引擎使用起来很方便,可以在vltContext.Put("starlist",list);设置泛型集合的引用对象,然后在html页使用$starlist.Name就可以调用集合中类的Name属性值。还可以在html页进行foreach遍历数组元素,
使用格式为
#foreach()
......
#end
还可以在html页进行条件判断,
格式为:
#if()
......
#else
......
#end
还可以将if判断嵌套在foreach中,对遍历的数组元素进行判断。
希望这篇文章可以帮助大家。谢谢!
Nvelocity模板引擎开发网页的更多相关文章
- Asp.net动态页面静态化之初始NVelocity模板引擎
Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...
- 【转】NVelocity模板引擎初学总结
转自:http://sunxitao88.blog.163.com/blog/static/68314439200861963326251/ 前不久,接触到.NET下的MVC-MonoRail,它推荐 ...
- NVelocity模板引擎学习笔记
NVelocity模板引擎学习笔记 学习模板引擎有一段时间现在做一些总结
- 前后端数据交互处理基于原生JS模板引擎开发
json数据错误处理,把json文件数据复制到----> https://www.bejson.com/ 在线解析json 这样能直观的了解到是否是json数据写错,在控制台打断点,那里错误打那 ...
- 转 如何使用velocity模板引擎开发网站
基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内.这种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法: 1:功能确定后,由美工设计网页的UI( ...
- SimpleTemplate模板引擎开发
模板引擎相信大家是经常使用的,但是实现原理估计没多少人知道(你要是说不就是replace嘛,那我也无话说了...). 先来看看这个SimpleTemplate想实现的是什么功能吧: 是个C#端的模板引 ...
- 初见NVelocity模板引擎
//using NVelocity.App; //using NVelocity; //using NVelocity.Runtime; VelocityEngine vltEngine = new ...
- NVelocity模板引擎的使用
第一种使用方法直接赋值: VelocityEngine vltEngine = new VelocityEngine(); vltEngine.SetProperty(RuntimeConstants ...
- nvelocity模板引擎
using NVelocity.App;using NVelocity.Runtime;using NVelocity; VelocityEngine vltEngine = new Velocity ...
随机推荐
- hibernate 一对多关联关系(具体分析)
在领域模型中, 类与类之间最普遍的关系就是关联关系. 在 UML 中, 关联是有方向的. 以 Customer 和 Order 为例: 一个用户能发出多个订单, 而一个订单仅仅能属于一个客户. 从 ...
- 【百度地图API】——国内首款团购网站的地图插件
原文:[百度地图API]--国内首款团购网站的地图插件 摘要: 本文介绍了一款应用在团购网站上的地图插件,适用于目前非常流行的团购网站.使用这款地图插件,无需任何编程技术,你就把商家的位置轻松地标注在 ...
- 突破IP限制动态替换代理ip。
须要导入的两个jar包 实现的javabean <span style="font-size:18px;">package com.jx.po; public clas ...
- 財智V6.0(完美破解序列号特别版)
財智V6.0(完美破解序列号特别版) 財智V6.0(完美破解序列号特别版) 財智6是眼下唯一在中央台报道的.比較成熟的国产理財软件.能全面管理家庭的日常收入.消费.储蓄 ...
- 使用JavaScriptSerializer进行序列化日期类型应该注意的问题
原文:使用JavaScriptSerializer进行序列化日期类型应该注意的问题 JavaScriptSerializer在序列化DateTime时,是用刻度来表示的,具体在Json体现为:\/Da ...
- 在windows下用C语言写socket通讯实例
原文:在windows下用C语言写socket通讯实例 From:Microsoft Dev Center #undef UNICODE #define WIN32_LEAN_AND_MEAN #in ...
- 初创互联网公司简明创业指南 - YC新掌门Sam Altman
本文只是一个创业指南的简明版 - 更详细的版本请查看:http://startupclass.samaltman.com 创业之前,你更应该去拥有一个好的创意,而不是一个公司.如果开始前你拥有一个好的 ...
- 天体程序猿叹息——变化hosts对
没有解释更新一SDK像贼,我真诚地希望在天上Android.ios我们已经禁止了.要玩不能玩才最寂寞 安装成功不寂寞hosts文件: 74.125.237.1 dl-ssl.google.com173 ...
- 软件project(六)——需求分析
需求分析是软件开发期的第一个阶段,是关系到软件开发成败的关键步骤.需求分析的任务就是明白系统必须完毕那些工作,以下是对需求分析这一章做的简要总结. 导图: 解释说明: 我将 ...
- 用css样式围剿等高列问题(转载)
明修栈道暗度陈仓 该秘籍的心法只有十二个字:”隐藏容器溢出,正负内外边距.”看完下面的几行代码,再看这句话你真的可以看到圣光! 隐藏容器溢出.将外层容器的溢出设为隐藏: .container { ov ...