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,但非必须。

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


ASP.Net MVC——Razor视图引擎

在MVC3.0版本的时候,微软终于引入了第二种模板引擎: Razor 。在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎 Razor在减少代码冗余、增强代码可读性和Visual Stu...
  • u010164936
  • u010164936
  • 2015年02月14日 21:40
  • 1302

Razor视图引擎 语法学习

http://www.cnblogs.com/fsjohnhuang/articles/2445222.html
  • lvjin110
  • lvjin110
  • 2014年05月04日 13:54
  • 1093

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

之前体验过razor视图引擎@符号的威力了吧~ 什么? 你不觉得
  • qq1010885678
  • qq1010885678
  • 2014年08月03日 20:41
  • 2070

ASP.NET MVC Razor 视图引擎

上篇博文介绍了一下Razor的基本语法,那今天看下Razor视图怎么布局吧! Question 网站为啥要布局? 说道布局了那么网站为什么要布局呢?不布局有什么坏处呢?好今天开始咱先说一下...
  • stephen1315
  • stephen1315
  • 2014年06月09日 17:24
  • 3449

ASP.NET的另一个视图引擎——Razor

一、什么是Razor?     要是你知道什么是ASPX,那我就告诉你:Razor是和ASPX 一样的另一种视图引擎。说到视图就明白了很多吧。既然都为视图引擎,都是MS的东西,两个视图引擎,一前一后...
  • wangyongxia921
  • wangyongxia921
  • 2014年08月22日 22:26
  • 1462

关于Razor视图引擎小结

在Asp.net MVC 3 中引入了新的视图引擎——Razor视图引擎 一、关于Razor的一些使用特点 1、Razor 的语法简单且清晰,只需要最小化的输入 2、...
  • changwei07080
  • changwei07080
  • 2012年04月07日 15:41
  • 781

ASP.NET MVC (六-1) Razor视图引擎

视图引擎负责处理ASP.NET内容,并查找相关指令,将动态的内容插入到发送给浏览器的输出,而Razor是MVC框架视图引擎的名称。准备示例项目 定义模型 定义控制器 创建视图 使用模型对象 使用布局 ...
  • github_37410569
  • github_37410569
  • 2017年02月09日 22:11
  • 229

ASP.NET MVC Razor视图引擎

本篇文章我们一起来讨论ASP.NET MVC框架中的Razor视图引擎。主要包含以下内容: 1. Razor简介 2. Razor语法 3. 布局页(Layout)Razor简介Razor...
  • daguanjia11
  • daguanjia11
  • 2015年04月08日 15:54
  • 1045

使用Razor视图引擎来生成邮件内容

邮件的内容其实是就HTML,传统的做法都是通过在程序中拼接字符串来生成邮件的内容,生成困难,维护也困难。Razor是MVC里面使用的视图引擎,用来生成HTML非常方便,ZKEACMS中就是使用了Raz...
  • linux12a
  • linux12a
  • 2017年09月03日 17:41
  • 123

ASP.NET MVC:Razor 引入命名空间

页面中引用 c# @using MvcApplication83.Models @using MvcApplication83.Common 行尾不需要加分号,加上也无妨(不过得全加上)...
  • sgear
  • sgear
  • 2014年07月09日 15:50
  • 1184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Razor视图引擎浅析
举报原因:
原因补充:

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