从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视图引擎

(本文版权属于© 2012 - 2013 予沁安 | 转载请注明作者和出处WangHaoBlog.com)

转载于:https://my.oschina.net/wonner/blog/92416

Razor视图引擎浅析相关推荐

  1. ASP.NET MVC3 Razor视图引擎-基础语法

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

  2. ASP.NET MVC 3: Razor视图引擎中 @: 和text 语法【转载】

    ASP.NET MVC 3: Razor视图引擎中 @: 和<text> 语法[转载] (文章没翻译:建议大家读英文原文,看不懂查着看,顺便提高自己的英语水平!) In today's p ...

  3. Razor视图引擎-基础语法

    Razor视图引擎-基础语法 原文:Razor视图引擎-基础语法 所有以 @开头 或 @{ /* 代码体 */ }  (在@与{直接不得添加任何空格) 的部分代码都会被ASP.NET引擎进行处理. 在 ...

  4. ASP.NET Razor 视图引擎编程参考

    ASP.NET Razor 视图引擎编程参考 ASP.NET Razor 视图引擎编程参考 转载请注明出处:http://surfsky.cnblogs.com Rasor 视图引擎     http ...

  5. ASP.NET MVC Razor视图引擎

    本篇文章我们一起来讨论ASP.NET MVC框架中的Razor视图引擎.主要包含以下内容: Razor简介 Razor语法 Razor如何呈现页面 布局页(Layout) Razor简介 Razor是 ...

  6. MVC学习三:Razor视图引擎

    1.Razor视图引擎,主要是把View的HTML代码编译到View视图类对象中 转载于:https://www.cnblogs.com/WarBlog/p/7132611.html

  7. Razor 视图引擎的一些属性和方法

    参考网址:http://www.cnblogs.com/hangwei/p/4391058.html ASP.NET MVC 5 Web编程4 -- Razor视图引擎 2015-04-30 09:0 ...

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

    一.天降神器"剃须刀" - Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用W ...

  9. Razor视图引擎、控制器与路由机制学习

    1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity ...

最新文章

  1. AIX卷管理介绍以及利用空闲PP来创建文件系统
  2. Centos下安装配置WordPress与nginx教程
  3. spark任务jvm内存溢出
  4. LOJ#2132. 「NOI2015」荷马史诗
  5. html怎么制作附页,HTML和CSS属性的正确书写规范
  6. 摄像头 保存到外网服务器_直播平台搭建千万不要忽略流媒体服务器的存在
  7. kibana是什么_三千字带你搞懂什么是ELK
  8. 极化码 串并行译码的辨别(SC BP SCAN)硬判决和软输出
  9. win10怎么取消开机密码
  10. 【转载】语音处理资源
  11. python有道翻译接口-Python调用有道翻译api实现翻译
  12. 《好玩游戏物品清单》实现
  13. 正念的奇迹 - 喧嚣的世界中获取安宁
  14. 如何设置静态路由器计算机网络,路由器如何设置静态ip(固定ip)地址上网?
  15. 手机截屏直接分享反馈
  16. 让码农越爱越想爱的星座女TOP 5
  17. Office之word中插入Latex伪代码
  18. 抖音联盟实战,批量工作室养号,情感号抖音制作教程
  19. 苹果手机input输入文字消失,看不见
  20. 【分享贴】学习网站、资源网站、工具网站大杂烩,好用实用,分享给猿友

热门文章

  1. PDFlib免费下载地址及详细介绍手册
  2. Weblogic EJB 学习笔记(3)精
  3. C# 与java区别总结 收集
  4. NXP(I.MX6uLL)DDR3实验——DDR3初始化、校准、超频测试
  5. 五大板块(2)—— 指针
  6. 根据图片地址得到文件流
  7. Java技术:项目构建工具Maven最佳替代者gradle介绍
  8. 硬件知识:u-boot和bootloader的区别
  9. 网络知识:各种缓存核心知识整理,值得收藏!
  10. 教你理清SpringBoot与SpringMVC的关系