在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&nbsp;我的年龄是$p.Age<br />
      我的父亲的名字是$p.Father.Name&nbsp;我父亲的年龄是$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模板引擎开发网页的更多相关文章

  1. Asp.net动态页面静态化之初始NVelocity模板引擎

    Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...

  2. 【转】NVelocity模板引擎初学总结

    转自:http://sunxitao88.blog.163.com/blog/static/68314439200861963326251/ 前不久,接触到.NET下的MVC-MonoRail,它推荐 ...

  3. NVelocity模板引擎学习笔记

    NVelocity模板引擎学习笔记 学习模板引擎有一段时间现在做一些总结

  4. 前后端数据交互处理基于原生JS模板引擎开发

    json数据错误处理,把json文件数据复制到----> https://www.bejson.com/ 在线解析json 这样能直观的了解到是否是json数据写错,在控制台打断点,那里错误打那 ...

  5. 转 如何使用velocity模板引擎开发网站

    基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内.这种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法: 1:功能确定后,由美工设计网页的UI( ...

  6. SimpleTemplate模板引擎开发

    模板引擎相信大家是经常使用的,但是实现原理估计没多少人知道(你要是说不就是replace嘛,那我也无话说了...). 先来看看这个SimpleTemplate想实现的是什么功能吧: 是个C#端的模板引 ...

  7. 初见NVelocity模板引擎

    //using NVelocity.App; //using NVelocity; //using NVelocity.Runtime; VelocityEngine vltEngine = new ...

  8. NVelocity模板引擎的使用

    第一种使用方法直接赋值: VelocityEngine vltEngine = new VelocityEngine(); vltEngine.SetProperty(RuntimeConstants ...

  9. nvelocity模板引擎

    using NVelocity.App;using NVelocity.Runtime;using NVelocity; VelocityEngine vltEngine = new Velocity ...

随机推荐

  1. thymeleaf模板引擎shiro集成框架

    shiro权限框架.前端验证jsp设计.间tag它只能用于jsp系列模板引擎. 使用最近项目thymeleaf作为前端模板引擎,采用HTML档,未出台shiro的tag lib,假设你想利用这段时间s ...

  2. 深入浅出MS06-040

    入浅出MS06-040 时至今日,网上已有颇多MS06-040的文章,当中不乏精辟之作.与其相比,本文突显业余,技术上无法超越,徒逞口舌之快.本文适合有一定计算机基础,初步了解溢出攻击原理,略微了解逆 ...

  3. MVC 缓存1

    MVC 缓存 为什么要讲缓存.缓存到底有什么作用? 下面我们来说一个场景我们有一个首页菜单的布局基本是不会经常发生的变化,如果动态生成的 Web 页被频繁请求并且构建时需要耗用大量的系统资源,那么,如 ...

  4. order by使用方法

    1.ORDER BY 中关于NULL的处理 缺省处理,Oracle在Order by 时觉得null是最大值,所以假设是ASC升序则排在最后,DESC降序则排在最前. 当然,你也能够使用nulls f ...

  5. dojo/request

    dojo/request模块整体架构解析   总体说明 做前端当然少不了ajax的使用,使用dojo的童鞋都知道dojo是基于模块化管理的前端框架,其中对ajax的处理位于dojo/request模块 ...

  6. Java之IO转换流

    直接上码:   读取键盘录入数据代码演示:   import java.io.IOException; import java.io.InputStream; /** *读取键盘录入的数据,并打印在控 ...

  7. 如何让Gridview在没有数据的时候显示表头(asp.net)

    原文:如何让Gridview在没有数据的时候显示表头(asp.net) 1.前言 当对GridView控件进行数据绑定时,如果绑定的记录为空,网页上就不显示GridView,造成页面部分空白,页面布局 ...

  8. 利用docker搭建yii2 详细步骤

    定位镜像 在hub.docker.com 搜索yii2,并且最后定位到 https://hub.docker.com/r/codemix/yii2-base/codemix/yii2-base 然后在 ...

  9. 从.net复制源代码中国农历阵列,必要做日历

    从.net复制源代码中国农历阵列,必要做日历 const { 闰月的月份.春节的阳历日期(农历正月初一).农历的每一个月天数 } c_arrLunarInfo: array [1900 .. 2100 ...

  10. 5. SQL Server数据库性能监控 - 当前请求

    原文:5. SQL Server数据库性能监控 - 当前请求 对于在线运行的系统,当前数据库性能监控,通常监视以下几点: (1) 是否有阻塞 (Blocking); (2) 是否有等待 (Waitin ...