当前位置:主页   - 电脑 - 网站开发 - ASP.Net
NVelocity系列:Getting Start With NVelocity
来源:网络   作者:   更新时间:2012-08-21
收藏此页】    【字号    】    【打印】    【关闭

  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        IHttpHandler Members#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 { get; set; }
66
67        /**//// <summary>
68        /// 名称
69        /// </summary>
70        public string Name { get; set; }
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>

  请求及输出效果:

NVelocity系列:Getting Start With NVelocity

  图片看不清楚?请点击o里查看原图(大图)。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明