• ASP.NET MVC 视图引擎


    本文内容

    • ASP.NET MVC
    • MVC 版本
    • ASP.NET MVC 视图引擎

     

    ASP.NET MVC


    ASP.NET MVC 是微软官方提供的以 MVC 模式为基础的 ASP.NET Web Application 框架,它由 Castle 的 MonoRail 而来,最新版本 ASP.NET MVC 4.0。MVC(Model、View、Controller)将一个Web应用分解为:Model、View和Controller。ASP.NET MVC 框架提供了一个可以代替ASP.NET WebForm的基于 MVC 设计模式的应用。

    MonoRail 的核心是 Action Pack 在 .NET上的实现,是一个 .NET 的 MVC Web 开发框架,原名 Castle On Rails,是 CastleProject 的一个子项。MonoRail 的开发模式和传统 WebForm有很大区别。WebForm 属于 PageController 模式,每一个页面对应一个 Controller,通常情况下,这个 Controller 就是 URL。System.WebUI.Page 实现了 IHttpHandler,与每个 aspx 相关的类都各自处理自己的 http 请求, 经一些逻辑处理后,输出自己的视图;而 MonoRail 是 FrontController 模式,由 Castle.MonoRail.Framework.MonoRailHttpHandler 接管所有请求,然后根据请求的 URL 创建相应的 Controller,Controller 再调用相应的 action,最后调用模板引擎输出内容。默认情况下,一个URL 结构是 Controller/action,例如 http://localhost/monorailSample/Home/index.rails 对应类 HomeController的 Index() 方法。

     

    MVC 版本


    • MVC 2.0 - 该版本适用于 VS 2008 及基于 ASP.NET 3.5 平台的 Visual Web Developer 2008 Express。而 VS 2010 正式版与 Visual Web Developer 2010 正式版中内置对 ASP.NET MVC 2的支持,无需另外安装。
    • MVC 3.0 - MVC 3中提供了新的View引擎:Razor。
    • MVC 4.0 - MVC 4 内置于VS 2012,新增手机模版、单页应用程序、Web API等模版,更新了一些 JavaScript 库,其中示例页面也使用了 jQuery 的 AJAX 登录,并增加了 OAuth认证/Entity Framework 5 的支持。同时也增强了对 HTML 5、AsyncController 等的支持。

     

    ASP.NET MVC 视图引擎


    ASP.NET MVC 主要有四种视图引擎。最新的 Razor 引擎(WebPages),其他三种是传统的 ASPX(WebForms)、Spark 和 NHaml。

    • ASPX 风格的视图引擎可以追溯到遥远的 ASP,用传统的 .aspx 文件做模板,可以照常使用aspx语法,如 <%= %> 和 <%: %> 语法占位符,以及服务器控件,但是由于 WebForm 生命周期(较昂贵)和MonoRail完全不同。
    • Spark 是ASP.NET MVC与 Castle 项目 MonoRail 框架的视图引擎 。其采取了稍微不同的做法。它既支持占位符,也可以用特殊的属性和标签不受限制地把 HTML 和代码混合在一起。这或许有些繁琐,但却拥有完全兼容 XML 的优势。
    • NHaml 是 .NET 平台移植自 Rails Haml 的视图引擎。Haml 是一种标记语言,描述简洁,不使用内联代码的任何 Web 文档的 XHTML。Haml 避免了需要进行显式编码 XHTML 到模板,因为它实际上是一个抽象描述的 XHTML,一些代码来生成动态内容。 这种语言根本不使用 XML 语法。借助于一种速记语法,免去了前一种风格(XML)中大量的语法"噪音",比如结束标签等。

    最新的视图引擎 Razor,从 Asp.net MVC 3 版本引入, 支持Unit Test,很容易上手。虽然它与前面的模板系统有些共性,但和我们前面讨论的三种视图引擎截然不同。不同于 NHaml,Razor 仍然使用 XML 标记;又不同于 Spark,Razor 使用 XML 代码方面没有走得那么极端;也不完全类似于 ASPX,它把那些比较笨重的占位符 <%= %> 和 <%: %> 替换成 @ 符号,不需要特殊的结束标记,代码很简练。

    默认情况下,从 @ 表达式生成的所有文本都是HTML编码过的【译注:从而防止XSS攻击】。@块里面的文本可以包含多个"HTML内容块"。当识别出任意的XML标签,Razor就会切换回HTML模式,跟传统ASP开发人员使用"%> html代码 <%="的技巧非常相似。如果你实际不希望XML标签切换回HTML模式,你可以使用< text>作为一个占位符。

    Razor 使用现有的 VB 或 C# 语法。任何文本编辑器都可以用来编辑Razor文件,而 VS 2010 加入对 Razor 文件智能提示的完全支持。

    Razor 的另一个重要特点是它与单元测试框架的兼容性。Razor 模板不需要 Controller 或 Web 服务器作为宿主(host),所以用它写出来的视图应该是充分可测的。对于 ASPX,虽然理论上一 切皆可测试,但实际上却是相当困难;而其他两个引擎在各自的网站上面甚至都没有真正提到可测试性。

    四个视图引擎都支持母版页的概念。对于把视图预编译进 Assembly 文件,ASPX 只提供了部分支持,而 Razor 和 Spark 都是完全支持。NHaml 目前把这项还是放在需求特性的列表上面。特别有趣的是,Razor 和 Spark 预编译出的视图可以用在无宿主的场景下,比如邮件合并引擎。

     

    此外,还有 Hasic Bellevue、NVelocity、BrailSharpTiles。Hasic 是一个用VB.NET's XML literals的Asp.net MVC 引擎;Bellevue 是一个Asp.net MVC框架的开源模板原形,以HTML为其核心没有其它更多的语法;NVelocity 需要学习VTL语法,使用很简单,特别是很多Java程序员已经熟悉Velocity。简单的语法也强迫程序员把逻辑和界面很好的分离开来,方便跟美工配合;Brail 是移植自MonoRail项目。基于Boo的模板引擎,Boo是一种语法类似 Python 的 .NET 语言。据 MonoRail 的参考说,Brail引擎是功能最强、性能最好的选择,但Boo是一种陌生的语言,这成了Brail引擎应用的最大障碍。MonoRail推荐使用的模板引擎是NVelocity,但说不定哪天Brail会赶上来;SharpTiles 是一个基于构建于ASP.NET MVC和Monorail框架的模板View Engine. 它的理念是部分移植自JSTL与Tiles框架。

  • 相关阅读:
    Spring bean的实例化
    提交本地代码到github
    ORM框架——SQLAlchemy
    代码发布项目(三)——python操作git、代码发布流程(服务器管理、项目管理)
    代码发布项目(二)——django实现websocket(使用channels)、基于channels实现群聊功能、gojs插件、paramiko模块
    代码发布项目(一)——实现服务端主动给客户端推送消息(websocket)
    索引补充(索引种类,正确使用索引,其他注意事项,慢日志查询)
    mysql索引种类(索引种类和建立索引)
    centos6安装Docker遇到的问题(升级centos6内核)
    Django1.11下载安装xadmin
  • 原文地址:https://www.cnblogs.com/liuning8023/p/3162516.html
Copyright © 2020-2023  润新知