模版引擎(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
        {
             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的语法访问。

原文地址:https://www.cnblogs.com/jiaxuekai/p/4087273.html