首页 > 代码库 > 模版引擎(NVelocity)开发

模版引擎(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="http://www.mamicode.com/$!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的语法访问。

 

模版引擎(NVelocity)开发