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

  • 相关阅读:
    记一个SharePoint Workflow一睡永不醒来的问题
    .NET Tracing简介
    !aspxpages(即!dumphttpcontext)命令输出的解释
    MOSS定时爬网无法启动的问题
    Persistent cookies和Session cookies的定义与区别
    跨SharePoint服务器场的Content Deployment的一个知识点
    如何明确指定命令所在的debugger extension?
    理解SharePoint中的备用访问映射(Alternate Access Mapping)
    biztalk中ACK、NACK详测示例【转】
    深入biztalk消息以及消息订阅发布路由机制(一)-消息概述【转】
  • 原文地址:https://www.cnblogs.com/jiaxuekai/p/4087273.html
Copyright © 2020-2023  润新知