以前用過一段時間的PHP,感覺非常不錯,其中最讓我難忘的就是Smarty模板引擎,當時就微微地想Asp.net裡有沒有像這樣的模板引擎呢?不過由於之後的工作內容都用不到,或者說沒有想到用模板,這想法也沒導致我做一些事情,就不了了之了。
現在也是工作需要,用模板是一個不錯的選擇。之前沒用過這種東西,盲搜一片沒找到自己想要的,於是自己就試著寫寫,大思路用的是Smarty的,用html頁面做為模板,生成aspx頁面,把數據放在HttpContext.Items裡,代碼如下:
html模板:
<div>{$title}</div> <select> {foreach $l in $list} <option value="{$l.Age}">{$l.Name}</option> {/foreach} </select>
生成的aspx頁面:
<%@ Page Language="C#" %> <% if (HttpContext.Current.Items["SMARTY_TEMPLATE_DIR"]==null) { Response.Write("no direct access allowed"); Response.End(); } %> <div><%=DotSmarty.Smarty.GetTemplateArg("title") %></div> <% var list = DotSmarty.Smarty.GetTemplateArg("list") as System.Collections.Generic.IList<SmartyTest.User>; %> <select> <% foreach (var l in list){ %> <option value="<%=l.Age %>"><%=l.Name %></option> <%}%> </select>
調用如:
Smarty smarty = new Smarty(); List<User> list = new List<User>(); list.Add(new User() { Age=1, Name="name111"}); list.Add(new User() { Age = 2, Name = "name222" }); smarty.Assign("title", "標題"); smarty.Assign("list", list, TemplateArgType.List); smarty.Display("user/userInfo.htm");
看起來很像Smarty,可越寫難度越大!唉,能力有限,將來有能力再說吧,現在只能放棄。
前幾天幸運地聽說了DotLiquid,網址是:http://dotliquidmarkup.org。上面曰:“DotLiquid is a templating system ported to the .net framework from Ruby’s Liquid Markup.It’s easy to learn, fast and safe"。我想我終於找到了asp.net中的smarty了,更有圖說明: