知识大全 使用aspx页面作为模板引擎的一种实现

Posted

篇首语:疾风知劲草,板荡识诚臣。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用aspx页面作为模板引擎的一种实现相关的知识,希望对你有一定的参考价值。

  什么是模板引擎?说白了就是能够自动替换占位符的替换引擎 原理上也就是两个步骤 找到 》替换 但是替换不是简单的替换 包括

  简单变量替换();        复杂变量替换();        对象变量替换();        键值类型替换();        自定义集合替换();        同时显示多个变量();        模板调用();        给调用模板传参数();        值模板();        简单循环();        交差循环显示();        通过模板交差循环();        条件判断();        从文件中创建模板();

  常用的模板引擎 StringTemplate和velocity差不多都是按照这种模式来设计的 但是这样子真的就是我们需要的吗?我们拿一段典型的StringTemplate的模板代码来看看

  首先是在模板文件中

  姓名 $User Name$ 年龄:$User Value$

  然后是在代码里          User us = new User();        us Name = xxsssx ;        us Value = ;        StringTemplate st = new StringTemplate( $User Name$ $User Value$ );        st SetAttribute( User us);        Console WriteLine(st ToString());

  [NextPage]

  那么我们来和ASP NET本身的代码做一个比较

  aspx页面          <asp:Label id= Name runat= Server /><asp:Label id= Mail runat= Server />        aspx cs文件        User us = new User();        us Name = xxsssx ;        us Value = ;        Name Text=us Name;        Mail Text=us Value

  就我个人来看 模板引擎是需要的 视图和控制的分离是必要的 但是我们要分清楚什么是视图 什么是控制 是不是视图就不能包含代码和逻辑?肯定答案是否定的 因为就算用了StringTemplate 你还是需要给它填充数据 而给它填充数据的代码仍然是属于视图而不是控制或者有人干脆就当作了模型 那么既然这样 为什么我们就不能用aspx页面本身来作为模板呢?它可以判断 可以循环 可以分支 可以使用现成的控件 比如          <%        if(Helper IsLogin())        User u=Helper GetLoginedUser();        %>        你的姓名是:<%=u Name%>        <%%>

  我们把这种方法和StringTemplate的方法来比较一下

  aspx模板    StringTemplate        控件         支持         不支持        复杂显示逻辑     支持         支持(未经测试所有可能性)        编辑器支持         支持         不支持        编译检测             支持         不支持

  现在可能有个疑问了 aspx的页面怎么作为模板来被调用呢?以访问就直接看到了没办法生成静态页面啊?

  其实解决的方法很简单 只需要Server Execute()就可以将执行的aspx页面运行的结果以一个TextWriter返回 这样子要怎么处理还不是看我们怎么高兴啦 哈哈

cha138/Article/program/net/201311/12314

相关参考

知识大全 在aspx页面中事件的执行顺序[2]

  保存及显示  下一个方法是SaveViewState不论是否是回传页面均会递归的执行以保存页面及其所有控件的ViewStateViewState基本上保存所有与定义在aspx中的原始值不同的值不管

知识大全 ASP.NET 页面aspx之扩展

ASP.NET页面aspx之扩展  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  需求某网站因业务

知识大全 分享25个顶级PHP模板引擎整理

分享25个顶级PHP模板引擎整理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为了找到一个好的

知识大全 ASP.NET用户控件操作ASPX页面

ASP.NET用户控件操作ASPX页面  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一简单实例

知识大全 模板引擎正则表达式调试小技巧

  很久没有遇上PHP难题了这次正则问题占了一点时间还是老问题最大回溯递归限制问题学习透之后其实并不难修改调试有这类问题的正则主要是以下几点  基于正则表达式替换的模板引擎很容易遇上正则表达式最大回溯

知识大全 在aspx页面中事件的执行顺序[1]

   一详细版  初始化  当页面被提交请求第一个方法永远是构造函数您可以在构造函数里面初始一些自定义属性或对象不过这时候因为页面还没有被完全初始化所以多少会有些限制特别地您需要使用Http

知识大全 在aspx页面中事件的执行顺序[3]

  更进一步如果ContentPage继承BasePage那么各事件的执行顺序将变成   UIPreInit   ContentPagePr

知识大全 将.aspx转换为.htm的两种方法

这篇文章介绍了将aspx转换为的两种方法有需要的朋友可以参考一下希望对你有所帮助   方法一:根据模板生成保持在文件夹中思路分析:写一个自定义的HTM模板 其中需要替换的地方用$v

知识大全 为什么在Phpcms模板风格里改了模板后更新首页不是成功提示而是一段页面

为什么在Phpcms模板风格里改了模板后更新首页不是成功提示而是一段页面?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 页面输出缓存

  最简单的缓存机制把整个Aspx页面保存在服务器端内存中用户请求页面时直接从服务器端内存中提取数数据不在经历页面的生命周期主要用于不经常更新和修改而在第一次编译是时要经过大量处理的数据页面输出缓存是