热门标签 | 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


    推荐阅读
    • 《数据结构》学习笔记3——串匹配算法性能评估
      本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
    • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
    • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
    • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
      本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
    • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
      本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
    • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
    • 知识图谱——机器大脑中的知识库
      本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
    • 后台获取视图对应的字符串
      1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
    • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
    • 基于layUI的图片上传前预览功能的2种实现方式
      本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
    • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
    • Webpack5内置处理图片资源的配置方法
      本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
    • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
    • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
    • Voicewo在线语音识别转换jQuery插件的特点和示例
      本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
    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社区 版权所有