1、VTemplate模板引擎的简介
VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象。当VTemplate应用于web开发时,界面设计人员可以和程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由程序开发人员关注业务逻辑编码。VTemplate将.NET程序代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在ASP.NET WebForm开发之外又提供了一种可选的方案。 VTemplate也可以作为动态文本生成工具,生成HTML、XML、邮件、程序源代码或其它文本等。
2、使用 VTemplate 生成的订单流程图
类似于一些购物网站,订单提交后实时的查询当前流转的步骤
1. 定VTemplateHelper类
class="code_img_closed" src="/Upload/Images/2013101118/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('b44aaac2-49af-4f6a-bfad-12333017959a',event)" src="/Upload/Images/2013101118/2B1B950FA3DF188F.gif" alt="" />
1 public class VTemplateHelper 2 { 3 4 5 public VTemplateHelper(string ConfigFile) 6 { 7 this.ConfigFile = ConfigFile; 8 LoadTemplateFile(); 9 } 10 11 public VTemplateHelper(string ConfigFile,Encoding Encoding) 12 { 13 this.ConfigFile = ConfigFile; 14 this.Encoding = Encoding; 15 LoadTemplateFile(); 16 } 17 18 /// <summary> 19 /// 当前页面的模板文档的配置参数 20 /// </summary> 21 protected virtual TemplateDocumentConfig DocumentConfig 22 { 23 get 24 { 25 return TemplateDocumentConfig.Default; 26 } 27 } 28 29 public TemplateDocument Document 30 { 31 get; 32 private set; 33 } 34 35 public string ConfigFile { get; set; } 36 37 public Encoding Encoding { get; set; } 38 39 /// <summary> 40 /// 是否读取缓存模板 41 /// </summary> 42 protected virtual bool IsLoadCacheTemplate 43 { 44 get 45 { 46 return true; 47 } 48 } 49 50 /// <summary> 51 /// 装载模板文件 52 /// </summary> 53 /// <param name="fileName"></param> 54 protected virtual void LoadTemplateFile() 55 { 56 if (Encoding == null) 57 { 58 Encoding = System.Text.Encoding.UTF8; 59 } 60 this.Document = null; 61 if (this.IsLoadCacheTemplate) 62 { 63 //测试缓存模板文档 64 this.Document = TemplateDocument.FromFileCache(ConfigFile, Encoding, this.DocumentConfig); 65 } 66 else 67 { 68 //测试实例模板文档 69 this.Document = new TemplateDocument(ConfigFile, Encoding, this.DocumentConfig); 70 } 71 } 72 73 /// <summary> 74 /// 请先调用LoadTemplateFile方法 75 /// </summary> 76 /// <returns></returns> 77 public string RenderText() 78 { 79 return this.Document.GetRenderText(); 80 } 81 82 public string RenderSimpleText(object obj,string Name) 83 { 84 this.LoadTemplateFile(); 85 this.Document.Variables.SetValue(Name, obj); 86 return RenderText(); 87 } 88 }View Code
2. 调用代码
VTemplateHelper vt = new VTemplateHelper(Server.MapPath("OrderProcessSteps.htm")); string html=vt.RenderSimpleText(order, "order"); this.DivProcess.InnerHtml = html;
DivProcess 是页面对应的DIV控件,用于显示内容
OrderProcessSteps.html 页面使用,类似ASPX 页面嵌套代码使用
1 <html xmlns="http://www.w3.org/1999/xhtml"> 2 <head> 3 <title></title> 4 <link href="../Style/css/common.css" rel="stylesheet" type="text/css" /> 5 <link href="../Style/css/user.orderinfo.css" rel="stylesheet" type="text/css" /> 6 <script type="text/javascript"> 7 function adddeliver() { 8 window.open("appdeliver.aspx?orderno="+<%=orderno %>); 9 } 10 </script> 11 </head> 12 <body> 13 <div id="process" class="section4"> 14 <div class="node fore ready"> 15 <ul> 16 <li class="tx1"> </li> 17 <li class="tx2" style="padding-left: 20px">提交订单</li> 18 <li class="tx3" style="padding-left: 80px"> 19 {$:order.OrderTime} </li></ul> 20 </div> 21 <div class="proce ready "> 22 <ul> 23 <li class="tx1"> </li></ul> 24 </div> 25 <vt:if var="order.OrderStatus" value="-1" > 26 <div class="node ready"> 27 <ul> 28 <li class="tx1"> </li> 29 <li class="tx2">订单关闭</li> 30 <li class="tx3"></li> 31 </ul> 32 </div> 33 <vt:else> 34 <vt:if var="order.PayStatus" value="0" > 35 <div class="node wait"> 36 <ul> 37 <li class="tx1"> </li> 38 <li class="tx2">暂未支付</li> 39 <li class="tx3"></li> 40 </ul> 41 </div> 42 <div class=" proce wait "> 43 <ul> 44 <li class="tx1"> </li></ul> 45 </div> 46 <vt:elseif value="1" > 47 <div class="node ready"> 48 <ul> 49 <li class="tx1"> </li> 50 <li class="tx2">支付确认中</li> 51 <li class="tx3"></li> 52 </ul> 53 </div> 54 <div class=" proce doing "> 55 <ul> 56 <li class="tx1"> </li></ul> 57 </div> 58 <vt:elseif value="2" > 59 <div class="node ready"> 60 <ul> 61 <li class="tx1"> </li> 62 <li class="tx2">付款成功</li> 63 <li class="tx3"></li> 64 </ul> 65 </div> 66 <div class=" proce ready "> 67 <ul> 68 <li class="tx1"> </li></ul> 69 </div> 70 </vt:if> 71 </vt:if> 72 </div> 73 </body> 74 </html>View Code
详细的使用可参考:http://www.cnblogs.com/kingthy/archive/2009/08/17/net-vtemplate.html
谢谢--