zoukankan      html  css  js  c++  java
  • 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&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中,对遍历的数组元素进行判断。

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

  • 相关阅读:
    java-transaction事件
    Cookie,Session基础知识
    JSP基础笔记
    PHP----学生管理系统
    C语言程序设计-----贪吃蛇
    2019年数维杯三场征战赛
    回忆2018年高教杯数学建模大赛
    iPad横屏模式研究
    IOS UIWebView截获html并修改便签内容,宽度自适应
    如何保持iOS上键盘出现时输入框不被覆盖
  • 原文地址:https://www.cnblogs.com/panchangtao/p/3443393.html
Copyright © 2011-2022 走看看