在net中用模版开发,在handler中用到了大量的html代码。为解决这个问题,我能够采用模版引擎(NVelocity)进行开发。
一、首先须要将NVelocity.dll文件放入项目,其次引用。
二、配置更改,
代码以下:css
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)为以文件方式读取。html
三、前台的使用,
前台代码以下:ui
<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的语法访问。url