在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中,对遍历的数组元素进行判断。

希望这篇文章可以帮助大家。谢谢!

最新文章

  1. 淘宝购物车页面 智能搜索框Ajax异步加载数据
  2. jQuery拉开关闭帷幕
  3. 关于history.js的使用
  4. linux 下更改 blast+ version
  5. Delphi操作XML简介
  6. [msf]那些年儿跑过的字典
  7. 【管理工具】Kerberos简单应用
  8. Java的容器小结
  9. [ACM] n划分数m部分,它要求每一个部分,并采取了最大的产品(间隔DP)
  10. 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包
  11. DDE复盘流程
  12. 【转】Entity Framework 5.0系列之约定配置
  13. 底部粘连(stiky footer)布局
  14. xilinx和altera复位电平
  15. Maven之(六)setting.xml配置文件详解
  16. Django---cookie和session
  17. 搭建iview环境
  18. leetcode每日刷题计划-简单篇day9
  19. JavaWeb学习 (三)————Tomcat服务器学习和使用(二)
  20. LeetCode子域名访问计数-Python3.7&lt;五&gt;

热门文章

  1. node.js的npm安装
  2. 西门子PLC学习笔记8-(计时器)
  3. .net mvc ajax list post
  4. ASP.NET Web API和ASP.NET Web MVC中使用Ninject
  5. Linux学习笔记——怎样在交叉编译时使用共享库
  6. [SQL]死锁处理语句
  7. sql注入工具sqlmap使用参数说明
  8. Spring IOC 之ApplicationContext的其他功能
  9. 让你的ubuntu串口程序可以直接读写串口
  10. 深入了解 Java HelloWorld