模版引擎(NVelocity)开发

在net中用模版开发,在handler中用到了大量的html代码。为解决这个问题,我可以采用模版引擎(NVelocity)进行开发。
1、首先需要将NVelocity.dll文件放入项目,其次引用。
2、配置更改,
代码如下:

context.Response.ContentType = "text/html";

            //1.创建Velocity 引擎(VelocityEngine)并设置属性

            VelocityEngine vltEngine = new VelocityEngine();

            vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");

            vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, context.Request.MapPath("~/templates"));

            vltEngine.Init();



            // 2.Velocity 上下文对象设置

            VelocityContext vltContext = new VelocityContext();

            vltContext.Put("data", "yhb");



            // 3.创建模板

            Template vltTemplate = vltEngine.GetTemplate("photo.htm");

            System.IO.StringWriter vltWriter = new System.IO.StringWriter();

            // 4.合并模板和上下文对象,输出

            vltTemplate.Merge(vltContext, vltWriter);



            context.Response.Write(vltWriter.GetStringBuilder().ToString());

将上述代码中需要的部分更改成我需要的配置,1.MapPath中所放路径为htm所在路径,2.vltContext.Put方法中所放为一个键值对,值为想要的信息,如datateble,list等等、、,3.在模版创建中vltEngine.GetTemplate方法中所放为当前要用的模版htm。(file)为以文件方式读取。

3、前台的使用,
前台代码如下:

<head>

    <title>模版引擎的使用</title>

    <style type="text/css">

        img

        {

            width: 50px;

            height: 50px;

        }

        table

        {

            border: 1px solid black;

            border-collapse: collapse;

        }

        table th, table td

        {

            border: 1px solid black;

        }

    </style>

</head>

<body>

    <table>

        <tr>

            <th>

                编号

            </th>

            <th>

                图片

            </th>

            <th>

                支持

            </th>

            <th>

                反对

            </th>

            <th>

                分享

            </th>

            <th>

                描述

            </th>

            <th>

                作者

            </th>

        </tr>

        #foreach($jj in $jia.rows)

        <tr>

            <td>

                $!jj.id

            </td>

            <td>

                <img src="$!jj.url" />

            </td>

            <td>

                $!jj.up

            </td>

            <td>

                $!jj.down

            </td>

            <td>

                $!jj.share

            </td>

            <td>

                $!jj.Description

            </td>

            <td>

                $!jj.author

            </td>

        </tr>

        #end

    </table>

</body>

  

注意在代码中$是一中语法,在$后面跟上vltContext.Put中建好的键值对的键就可以访问数据了,在NVelocity中只有foreach循环,循环开始时用#foreach结束时用#end。
$键的方式是取值,如果没有该值的话,会在页面上显示原有样式,用取反的方式($!键)这样有值则会显示,没值也不会在页面上显示原有样式。
当$!键后直接跟了一段英文或字母,则NVelocity会讲此次的访问当作一个不存在的键访问,这种情况下可以用$!{键}xiaoxue的语法访问。

 

你可能感兴趣的:(velocity)