热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET一般处理程序基础2(Nvelocity模板引擎用法)

PersonpersonnewPerson();person.Nameyzk;person.Age30;PersondadnewPerson();dad.Nameywx;dad

Person person = new Person();
person.Name = "yzk";
person.Age = 30;

Person dad = new Person();
dad.Name = "ywx";
dad.Age =
60;
person.Father = dad;
在html模板中可以这样取值

我的老爹是
$p.Father.Name,他的年龄是$p.Father.Age


19、Nvelocity的特性,如果建立的对象是个索引,还可以把索引当做它的值。
Dictionary
dict=new
Dictionary();//建一个Dictionary键值对
dict["tom"]="斯坦福";
dict["jim"]="加里敦";
dict["yzk"]="哈佛";
//把Dictionary扔给模板引擎



VelocityEngin vltEngine=new VelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER,
"file");
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH,System,Web.Hosting.HostingEnvironment.MapPath(
"~/templates"));
vltEngine.Init();
VelocityContext vltContext
=new VelocityContext();
vltContext.Put(
"ps",dict);//这里改成使用字典
Template vltTemplate=vltEngine.GetTemplates("test3.htm");
System.IO.StringWriter.vltWriter
=new System.IO.StringWriter();
vltTemplate.Merge(vltContext,vltWriter);
//用GastleNvelocity1.11版本的就不会报错了
string html=vltWriter.GetStringBuilder().ToString();
context.Response.Write(html);

--------------------------------test3.htm

$ps.tom;


可以得到斯坦福

 

20、Nvelocity的深入,可以对对象进行foreach
C#基本语法
string[] strs=new
string[]{"dsdsds",sresfs"};
foreach(string s in strs)
{

Console.WriteLine(s);
}
-------------------------------可以类似于这样的遍历
string[]
strs=new
string[]{"黄继光","古天乐","张靓颖"};
vltContext.Put("mingrens",strs);
-----------------------------------------------
List
persOns=new List();//用前面定义好的那个Person类
persons.Add(new
Person{Age=30,Name="林华丽"});
persons.Add(new
Person{Age=10,Name="王二小"});
persons.Add(new
Person{Age=20,Name="刘德华"});
vltContext.Put("psersons",persons);
...........................
-------------------------test3.htm里面


#foreach($mr in $mingrens)

  • $mr


  • #end

    //这就是对集合进行遍历然后输出的方法
    ----------------------------------------------------------


    #foreach($mr in $mingrens)
  • $p.Name的年龄是$p.Age


  • #end
    //这就是对集合进行遍历然后输出的方法


    21、可以在NVelocity中用if else判断
    #if($age>10)
    大于10

    #else
    小于10
    #end
    ----------------------------------



      #foreach($p in $persons)
      #if($p.Age>20)
    • >$p.Name的年龄是$p.Age

    • #else
    • >$p.Name的年龄是$p.Age

    • #end

      #end


    22、Nvelocity的包含,类似于母版页,所有的页面中都调用这个,包含头尾,和母版一样用。
    --------------------------------head.htm



    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    >
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>title>
    head>
    <body>
    <p><h1>欢迎光临$ageh1>p>
    #if($age>30)
    hahaha
    #end

    -------------------------------foot.htm



    #if($age<10)
    hahaha
    #end
    >本网站版权所有$agep>
    body>
    html>

    -------------------------------test3.htm
    #include("head.htm");
    ....................
    #include("foot.htm");
    -------------------------------guanggao.htm可以加个广告,不光是头尾
    href="http://www.baidu.com">点击加载
    #include("guanggao.htm");
    ************************************************************************************
    除了include还有个叫parse可以将include替换掉,作用和效果是一样的,但是有区别。
    include元素只是把页面内容包含进来,并不会解析其中的Nvelocity元素,而parse会解析其中的元素
    也就是说早head.htm或者foot.htm中加入$p.name不会include不会解析,parse会解析

    23、对Nvelocity进行封装
    用C#中提供的匿名类来解决这个问题
    ----------------------------------------displayNews.htm

    $title


    作者:$author;发布日期:$postdate


    $msg



    ---------------------------------------DisplayNews.ashx
    vltContext.Put("title","sfdsds");
    vltContext.Put("author","sfdsds");
    vltContext.Put("person","sfdsds");
    vltContext.Put("age","sfdsds");//这样要put四个变量
    ******************************************怎么解决

    $data.Title


    作者:$data.Tuthor;发布日期:$data.Tostdate


    $data.Msg



    -----------------------------------定义匿名类//所谓的匿名类其实就是编译器自动帮你生成的一

    个类,其实还是一个正常的类
    var
    news=new{Tile="特大喜讯",Author="刘德华",PoseDate="2013-11-08",Msg="今晚上会公布喜讯

    细节!"};//把类的定义和对象的声明初始化放到一起
    string
    s=news.PostDate;//News是累的一个对象,一个类既然继承object那么直接可以点出来了
    匿名类的好处是,随new随用,用完就扔了
    vltContext.Put("data",news);//把匿名类的对象放进去



    public void ProcessRequest(HttpContext context)
    {
    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(
    "~/templates"));
    //模板文件所在的文件夹
    vltEngine.Init();
    //把类的定义和对象的声明初始化放到一起
    //匿名类
    var news = new { Title = "特大喜讯",Author="杨中科",PostDate="2013-11-08",Msg="今天晚上会公布喜讯细节!" };
    string s = news.PostDate;
    VelocityContext vltContext
    = new VelocityContext();
    vltContext.Put(
    "data", news);
    Template vltTemplate
    = vltEngine.GetTemplate("displayNews1.htm");
    System.IO.StringWriter vltWriter
    = new System.IO.StringWriter();
    vltTemplate.Merge(vltContext, vltWriter);
    string html = vltWriter.GetStringBuilder().ToString();
    context.Response.Write(html);
    }

    也可以定义一个Nvelocity类简化代码:



    public static string RenderHtml(string name, object data)
    {
    VelocityEngine vltEngine
    = new VelocityEngine();
    vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER,
    "file");
    vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath(
    "~/templates"));//模板文件所在的文件夹
    vltEngine.Init();
    VelocityContext vltContext
    = new VelocityContext();
    vltContext.Put(
    "Model", data);//设置参数,在模板中可以通过$data来引用

    Template vltTemplate
    = vltEngine.GetTemplate(name);
    System.IO.StringWriter vltWriter
    = new System.IO.StringWriter();
    vltTemplate.Merge(vltContext, vltWriter);
    return vltWriter.GetStringBuilder().ToString();
    }

     

    ASP.NET 一般处理程序基础2(Nvelocity模板引擎用法),布布扣,bubuko.com


    推荐阅读
    • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
    • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
    • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
    • 本文探讨了使用普通生成函数和指数生成函数解决组合与排列问题的方法,特别是在处理特定路径计数问题时的应用。文章通过详细分析和代码实现,展示了如何高效地计算在给定条件下不相邻相同元素的排列数量。 ... [详细]
    • 探讨如何在映射文件中处理重复的属性字段,以避免数据操作时出现错误。 ... [详细]
    • 网络流24题——试题库问题
      题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
    • 为何Compose与Swarm之后仍有Kubernetes的诞生?
      探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
    • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
    • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
    • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
    • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
    • 二维码的实现与应用
      本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
    • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
    • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
    • ASP.NET 进度条实现详解
      本文介绍了如何在ASP.NET中使用HTML和JavaScript创建一个动态更新的进度条,并通过Default.aspx页面进行展示。 ... [详细]
    author-avatar
    拍友2502902623
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有