zoukankan      html  css  js  c++  java
  • NVelocity系列:Getting Start With NVelocity (转)

    NVelocity是java velocity的c#实现,目前我在CodePlex维护着与velocity同步的版本。NVelocity也在项目中使用着,在社区也有国外开发者的一些反馈。

     下面是一个在Asp.Net如何使用NVelocity的非常简单例子:

     定义HttpHandler:


     1namespace NVelocity.TestWebsite
     2{
     3    using System;
     4    using System.Collections.Generic;
     5    using System.IO;
     6    using System.Web;
     7
     8    using Commons.Collections;
     9
    10    using NVelocity.App;
    11    using NVelocity.Context;
    12    using NVelocity.Runtime;
    13
    14    /// <summary>
    15    /// 
    16    /// </summary>

    17    public class NVelocityHandler : IHttpHandler
    18    {
    19        #region IHttpHandler Members
    20
    21        public bool IsReusable
    22        {
    23            get return false; }
    24        }

    25
    26        public void ProcessRequest(HttpContext context)
    27        {
    28            VelocityEngine velocity = new VelocityEngine();
    29
    30            ExtendedProperties props = new ExtendedProperties();
    31
    32            //定义模板路径
    33            props.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Views"));
    34
    35            //初始化
    36            velocity.Init(props);
    37
    38            List<City> list = new List<City>();
    39
    40            list.Add(new City() { Name = "sh", Id = 21 });
    41            list.Add(new City() { Name = "bj", Id = 22 });
    42            list.Add(new City() { Name = "tj", Id = 23 });
    43
    44
    45            IContext c = new VelocityContext();
    46
    47            //添加到上下文中
    48            c.Put("cities", list);
    49
    50            //根据请求输出
    51            velocity.MergeTemplate(context.Request.QueryString["vm"+ ".vm""UTF-8", c, context.Response.Output);
    52        }

    53
    54        #endregion

    55    }

    56
    57    /// <summary>
    58    /// 城市
    59    /// </summary>

    60    public class City
    61    {
    62        /// <summary>
    63        /// ID
    64        /// </summary>

    65        public int Id getset; }
    66
    67        /// <summary>
    68        /// 名称
    69        /// </summary>

    70        public string Name getset; }
    71    }

    72}

    73

     一个用于测试的default.vm模板文件:


    1##循环输出
    2#foreach($city in $cities)
    3Id:$city.id<br />
    4城市名称:$city.name<br />
    5#end
    6##索引获取数据
    7$cities.get_item(2).name
    8

     在Web.config中配置上面定义的HttpHandler:


    <httpHandlers>
                
    <add verb="*" path="*.page" type="NVelocity.TestWebsite.NVelocityHandler,NVelocity.TestWebsite"/>
            
    </httpHandlers>

     请求及输出效果:

     

  • 相关阅读:
    余额宝收益查询_最新收益率
    以数据结构为核心的编程方法
    CMake使用技巧
    使用Boost库(1)
    C++程序的目录结构、编译、打包、分发
    Header Only Library
    为什么要学习数据结构和算法?
    自己手动构建文件服务器
    今天笔试的几道题目分享-三页智力题+三页程序题
    【转】委托的N种写法,你喜欢哪种?
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1456498.html
Copyright © 2011-2022 走看看