那么我们来和ASPNET本身的代码做一个比较
aspx页面 <asp:Label id=Name runat=Server /><asp:Label id=Mail runat=Server />
aspxcs文件
User us = new User();
usName = xxsssx;
usValue =;
NameText=usName;
MailText=usValue
就我个人来看模板引擎是需要的视图和控制的分离是必要的但是我们要分清楚什么是视图什么是控制是不是视图就不能包含代码和逻辑?肯定答案是否定的因为就算用了StringTemplate你还是需要给它填充数据而给它填充数据的代码仍然是属于视图而不是控制或者有人干脆就当作了模型那么既然这样为什么我们就不能用aspx页面本身来作为模板呢?它可以判断可以循环可以分支可以使用现成的控件比如 <%
if(HelperIsLogin()){
User u=HelperGetLoginedUser();
%>
你的姓名是:<%=uName%>
<%}%>
我们把这种方法和StringTemplate的方法来比较一下
aspx模板 StringTemplate
控件 支持 不支持
复杂显示逻辑支持 支持(未经测试所有可能性)
编辑器支持支持 不支持
编译检测 支持 不支持
现在可能有个疑问了aspx的页面怎么作为模板来被调用呢?以访问就直接看到了没办法生成静态页面啊?
其实解决的方法很简单只需要ServerExecute()就可以将执行的aspx页面运行的结果以一个TextWriter返回这样子要怎么处理还不是看我们怎么高兴啦哈哈
记得之前有人提过类似方法不过有人可能会质疑那不是还有美工也会?其实回过头一想如果你告诉美工<%=uName%>就是代表用户的姓名那么也不会需要美工学习全套的而其实就美工来说如果学习简单实用都有困难那么学习StringTemplate的全套模板语法和灵活掌握使用方法可能更加让人郁闷如果这些工作都给程序员来完成的话那么已经是程序员熟练掌握的c#语法是不是更加的平易近人呢?况且还可以智能感知菜单和编译检测支持所以我觉得在大多数情况下这种方法是比较爽的一种方式