最近项目有需要开发一个模板的功能,在asp.net mvc项目中使用模板在不压缩代码的情况下,性能能提升0.02s左右(本地IIS+FF),
如果压缩代码性能差在1s左右。
一个模板页内容如下:
<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>${title}-${sitename}</title> ${css} </head> <body> <!-- 调用头部部分模板 --> ${partial:"partial.header.html"} <p> ${content} </p> <p>联系方式:<br /> MSN:${msn}<br /> QQ:${qq}</p> </body> </html>
${}表示一个标签,${partial:""}标示为一个部分的视图
这样我们可以创建/template/#default/文件夹
文件夹加上#可以防止别人通过http浏览或下载模板
分别创建default.html和partial.header.html模板,并写入含有标签的Html代码
在后台创建 TemplatePage对象,传入模板的ID或标签数据,使用ToString()返回HTML,
我们可以扩展一个Render方法来输出Html到页面上
代码如下:
string templateID=TemplateContext.Utility.GetTemplateID("Templates/#default/default.html"); TemplatePage page = new TemplatePage(templateID, new { title = "网站首页", headertext = "测试模板 by opsoft", css = "/images/style.css", content = @"此Demo仅供演示,详细使用方法请看代码或上网站www.ops.cc查询。", msn="new.min@msn.com", qq="959398298" }); page.Render();
这个就完成了模版与内容的解析工作,在这之前我们还需要注册模板
TemplateContext.RegisterTemplate(string basedirectory)
参数为模版目录,这样就完成注册了,还可以使用模板缓存或压缩
(默认压缩和缓存)
缓存模板设置:Config.EnableCache=true;
压缩模板设置:Config.EnableCompress=true;
通过TemplateContext.Cache还可以添加和删除系统的标签