关于DotLiquid-Asp.net模板引擎

以前用过一段时间的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了,更有图说明:




转载请注明:http://www.shhjfk.com/fzlc/fzlc/9.html