Razor视图引擎浅析

原创 2012年03月28日 04:10:59
从Web Form开始,视图的机制其实就没改变过,动态编译视图脚本。所不同的是,Razor就仅仅是模板,没在嵌入与网站等相关的东西,应该是SRP的一个体现。

可惜,这种功能分离仍做得不彻底,MVC中,Razor与其他部分的整合仍比较多,路径的寻找等功能的嵌入,使得它不容易单独拿出来使用。当然,这也是微软的一贯风格,整体使用性能优先。视图引擎浅析


模板是其最主要的功能,但是另一个次功能也不可忽视,内嵌帮助方法及其智能代码完成功能。这个附助功能,大大提高效能。

现在,我们面临的问题是,当脱离ASP。Net MVC的框架以后,如何保持这个特性。幸运的是,微软提供了扩展的接口或者说方法。

在阐述解决方案之前,还是再回顾一下视图引擎的原理。
从Web Form到Razor,即有继承也有扬弃。模板文件(cshtml vbhtml),仍然是当作一个类来处理,这与原来的机制是一致,不同的是不再是静态类,以前文件名就是页面类名,并且还可以有一个真正的类文件直接使用(code behind, partial class)。而Razor是完全的运行时编译生成的类,甚至类名都是临时生成Guid。
所有这些改变,使得对View的控制如同要抓住随风漂动的树叶,几乎不可能,幸运的是,漂动叶子有着不动的根,这个根就是所有View的基类,WebViewPage。注意到这个类是个抽象类,原因显而易见。
抓到这个根本之后,MVC的很多特性和功能就立马找到了出处。
比如,HtmIHelper(Razor 使用@Html), Model (Razor 使用@Model)等,其实都是这个基类的一个属性。

以上就是Razor视图的主要的机制,如果开发人员只使用ASPNet MVC本身的功能,而不去扩展,或者像我们一样完全创建一套自己全新的框架,那么这些背后的故事,知道也可,不了解也无所谓。

而对我们的框架开发来说,还有一个重要问题,扩展接口在哪里?答案却是极其简单,在Web,Config文件有一块<pages>的配置区或,其中有一项ParseBaseType改成你自己View的基类即可。甚至,代码智能提示(IntelliSense)功能就马上起作用(也许要重起Visual Studio)。这个自定义类可以继承自WebViewPage,但非必须。

好了,万事俱备,可以开始展开你想象翅膀,做你想作的事了。


相关文章推荐

浏览器渲染原理及解剖浏览器内部工作原理

1、简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程。先来大致了解一下浏览器都是怎么工作的:   1. 用户输入网址(假设是个html页面,并且是第一次访问...

MVC3_Razor视图引擎基础语法

  • 2012年08月10日 13:17
  • 30KB
  • 下载

Razor视图引擎语法

  • 2013年03月28日 17:08
  • 182KB
  • 下载

MVC3 Razor视图引擎-基础语法

I:ASP.NET MVC3在Visual Studio 2010中的变化   在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化。   1.ASP.N...

Asp.net MVC 3 Razor视图引擎的使用(一)

Razor常用语法

ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习

原文出处: Edison Chou的博客(@周旭龙EdisonChou)    一、Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模...

Razor视图引擎 语法学习

http://www.cnblogs.com/fsjohnhuang/articles/2445222.html

基于ASP.NET新的视图引擎Razor

介绍“Razor”— ASP.NET的一个新视图引擎【原文地址】Introducing “Razor” – a new view engine for ASP.NET【原文发表日期】 July 02,...

ASP.NET MVC学习---(七)Razor视图引擎语法

之前体验过razor视图引擎@符号的威力了吧~ 什么? 你不觉得

ASP.NET MVC 3:Razor视图引擎下显式和隐式代码块

处作(一) http://weblogs.asp.net/scottgu/archive/2010/12/16/asp-net-mvc-3-implicit-and-explicit-code-nu...
  • huadupi
  • huadupi
  • 2011年01月12日 23:17
  • 2279
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Razor视图引擎浅析
举报原因:
原因补充:

(最多只允许输入30个字)