`

从模板引擎到模板引擎-使用aspx页面作为模板引擎的一种实现

阅读更多
此文完全有感而发,在网上看到很多介绍各类模板引擎的文章,但是我却越来越感觉到很多时候我们所做的事
情是在舍近求远。
什么是模板引擎?说白了就是能够自动替换占位符的替换引擎。原理上也就是两个步骤,找到-》替换。但是替换不是简单的替换,包括:
  • 简单变量替换();
  • 复杂变量替换();
  • 对象变量替换();
  • 键值类型替换();
  • 自定义集合替换();
  • 同时显示多个变量();
  • 模板调用();
  • 给调用模板传参数();
  • 值模板();
  • 简单循环();
  • 交差循环显示();
  • 通过模板交差循环();
  • 条件判断();
  • 从文件中创建模板();
常用的模板引擎,StringTemplate和velocity差不多都是按照这种模式来设计的。但是这样子真的就是我们需要的吗?我们拿一段典型的StringTemplate的模板代码来看看:

首先是在模板文件中:

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

然后是在代码里:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->User us = new User();
us.Name 
= "xxsssx";
us.Value 
="80";
StringTemplate st 
= new StringTemplate("$User.Name$,$User.Value$");
st.SetAttribute(
"User", us);
Console.WriteLine(st.ToString());


那么我们来和ASP.NET本身的代码做一个比较
aspx页面
<asp:Label id="Name" runat="Server" /><asp:Label id="Mail" runat="Server" />
aspx.cs文件
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->User us = new User();
us.Name 
= "xxsssx";
us.Value 
="80";
Name.Text
=us.Name;
Mail.Text
=us.Value


是不是有点感觉用了模板引擎跟脱了裤子放屁没有什么区别?
那么我们为什么要用模板引擎?是真的需要还是赶时髦?
就我个人来看,模板引擎是需要的。视图和控制的分离是必要的,但是我们要分清楚什么是视图,什么是控制。是不是视图就不能包含代码和逻辑?肯定答案是否定的,因为就算用了StringTemplate,你还是需要给它填充数据,而给它填充数据的代码仍然是属于视图而不是控制或者有人干脆就当作了模型。那么既然这样,为什么我们就不能用aspx页面本身来作为模板呢?它可以判断,可以循环,可以分支,可以使用现成的控件。比如

<%
if(Helper.IsLogin()){
User u=Helper.GetLoginedUser();
%>
你的姓名是:<%=u.Name%>
<%}%>

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

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

现在可能有个疑问了,aspx的页面怎么作为模板来被调用呢?以访问就直接看到了没办法生成静态页面啊?
其实解决的方法很简单,只需要Server.Execute()就可以将执行的aspx页面运行的结果以一个TextWriter返回。这样子要怎么处理还不是看我们怎么高兴啦。哈哈

记得之前有人提过类似方法,不过有人可能会质疑:那不是还有美工也会asp.net?其实回过头一想,如果你告诉美工<%=u.Name%>就是代表用户的姓名,那么也不会需要美工学习全套的asp.net,而其实就美工来说,如果学习简单实用asp.net都有困难,那么学习StringTemplate的全套模板语法和灵活掌握使用方法可能更加让人郁闷。如果这些工作都给程序员来完成的话,那么已经是程序员熟练掌握的c#语法是不是更加的平易近人呢?况且还可以智能感知菜单和编译检测支持。所以我觉得在大多数情况下这种方法是比较爽的一种方式。

PS,现在公司有个java的项目,我也直接让下面的同学直接用jsp页面当作模板,反响不错,大家都觉得很happy:』
分享到:
评论

相关推荐

    Asp.Net模板引擎_aspx开发教程.rar

    Asp.Net模板引擎是微软.NET框架下用于快速构建动态网页的一种技术,它允许开发者通过使用ASPX文件(ASP.NET的视图引擎)来创建可复用的、动态生成的HTML页面。在本教程中,我们将深入探讨Asp.Net模板引擎的基础知识...

    模板引擎(标签解析)示例源码

    模板引擎是一种用于动态生成HTML、XML或其他格式文档的技术,它允许开发者使用特定的标签或语法在静态模板中插入变量和逻辑。在Web开发中,模板引擎广泛应用于博客系统、内容管理系统(CMS)和论坛等应用,以实现...

    ASP.NET-[其他类别]asp.net生成静态页面的模板引擎.zip

    模板引擎允许开发者使用标记语言来定义页面布局和设计,然后通过数据绑定将动态数据填充到这些模板中。这通常涉及使用服务器控件、数据源和数据绑定表达式,如`&lt;%# %&gt;`或`&lt;% %&gt;`。 EFPlatform.TemplateEngine v1.0 ...

    aspx页面网站模板

    ASPX页面网站模板是一种基于微软.NET Framework开发的网页模板,用于快速构建动态、功能丰富的Web应用程序。这种模板通常包含预设计的布局、样式和交互元素,可以帮助开发者节省时间和精力,专注于业务逻辑和个性化...

    asp.Net模版引擎

    模板引擎的核心理念是将页面布局与业务逻辑分离,允许开发者使用简洁、可读性强的标记语言来设计页面布局,同时通过C#等后端编程语言处理动态数据和业务逻辑。 在ASP.NET中,最常用的模板引擎有Razor和Web Forms两...

    CodeSmithBS页面生成模板

    模板是用CST(CodeSmith Template)语言编写的,这是一种基于.NET的声明式编程语言,用于定义数据如何被转换成代码或文本。在这个资源中,我们有两个模板文件:`AspxCs.cst`和`Aspx.cst`。 `AspxCs.cst`可能是一个...

    Asp.net根据Url和模板生成静态页面

    在Asp.net开发中,将动态网页转换为静态页面是一种常见的优化策略,它可以提高网站的加载速度,减轻服务器负担,并有利于搜索引擎优化(SEO)。本文将详细介绍如何利用Asp.net根据Url和模板生成静态页面。 首先,...

    ASP.NET源码——[新闻文章]基于模板生成静态页面的简单新闻系统.zip

    ASP.NET框架提供了一种强大的方式来实现动态内容到静态HTML的转换,这个“基于模板生成静态页面的简单新闻系统”就是这种技术的一个实例。本文将深入探讨这个系统的实现原理和关键知识点。 首先,我们要理解ASP.NET...

    BaiduTemplate模板引擎使用示例(附源码)

    以下是对BaiduTemplate模板引擎的详细解释和使用示例: 1. **模板引擎的基本概念** 模板引擎是用于动态生成HTML的工具,它通过将数据和HTML模板结合,生成最终的HTML页面。BaiduTemplate提供了一种简洁的语法,...

    .net后台生成静态页面

    在.NET框架中,后台生成静态页面是一种常见的优化网站性能的技术,尤其适用于内容更新不频繁但访问量大的网站。这种技术可以将动态生成的网页转换为HTML文件,供客户端直接下载,减少了服务器处理请求的负担。以下是...

    如何使用T4模板引擎为SharePoint 2010实现通用实体列表存储库和业务逻辑

    T4是一种强大的代码生成工具,它允许开发者在运行时或设计时自定义代码生成过程,从而简化复杂的开发任务。 首先,我们需要理解T4模板的基本概念。T4模板由两部分组成:控制流(template directives)和文本输出。...

    ASP.NET简单转换静态页面

    ASP.NET是一种微软开发的服务器端Web应用程序框架,用于构建动态网站、web应用和web服务。在本主题中,“ASP.NET简单转换静态页面”指的是将ASP.NET动态页面转换为HTML静态页面的过程。这种转换有助于提高网站的性能...

    Aspx版的租房网站源码

    【ASPX版的租房网站源码】是一种基于ASP.NET技术构建的在线租房平台的源代码。ASP.NET是由微软开发的一种Web应用程序框架,用于构建动态、数据驱动的网站和应用程序。这个源码提供了一个完整的解决方案,使得开发者...

    asp.net 利用word模板导出word文件

    本实例将深入探讨如何实现这一功能,主要涉及的知识点包括ASP.NET的基础编程、Word文档操作以及模板引擎的使用。 首先,我们需要了解ASP.NET的基础。ASP.NET是由微软开发的一种Web应用程序框架,用于构建动态网站、...

    asp页面实现伪静态代码

    在IT行业中,尤其是在Web开发领域,"asp页面实现伪静态代码"是一个常见的需求,它涉及到网站优化和搜索引擎友好性的问题。ASP(Active Server Pages)是微软的一种服务器端脚本环境,用于生成动态交互式网页。伪静态...

    静态页面生成系统

    总的来说,"静态页面生成系统"是一种提升Web性能的技术,而"xiaokongzi_51aspx"可能是一个基于C#和ASP.NET实现的解决方案,提供了快速部署和定制的可能性。通过理解和利用这个系统,开发者可以为他们的网站带来更快...

    C#生成html静态页面示例

    C#是一种功能强大的编程语言,能够方便地实现这个功能。本文将深入探讨如何使用C#生成HTML静态页面,以及如何理解并应用提供的示例代码。 首先,我们要理解C#生成HTML页面的基本原理。这通常涉及到了解ASP.NET框架...

    html静态页面生成

    HTML静态页面生成是一种常见的Web开发技术,主要用于提升网站的加载速度和SEO优化。在.NET框架下,我们可以利用各种工具和方法来实现这一功能。本文将深入探讨如何通过.NET后台批量生成静态HTML页面,并讨论其重要性...

    C# NVelocity模板调用实例

    总的来说,C#结合NVelocity模板引擎可以实现高效的动态内容生成,提供了一种灵活的方式将后端数据与前端展示分离。通过熟悉VTL语法和正确配置C#代码,你可以创建出强大的、可扩展的Web应用程序。

    文章列表生成HTML静态分页页面

    在IT行业中,生成HTML静态分页页面是一种常见的需求,特别是在网站开发中,为了提高用户体验和搜索引擎优化(SEO)效果。本示例通过“aspnetpager”动态原理来实现这一功能,下面将详细介绍这个过程。 首先,`...

Global site tag (gtag.js) - Google Analytics