ASP.NET MVC5 视图预编译

关于Razor视图及引擎原理,就不多说了。

这里通俗或者不恰当地说,cshtml视图文件是先编译成dll文件,再通过视图引擎“解析”成html输出到浏览器。

但mvc编译cshtml是动态编译的,并缓存起来。

它到底缓存到哪里了?请看园子里的蒋金楠《ASP.NET MVC的Razor引擎:View编译原理》一文 !

相信不少人想过:能不能把视图进行预(提前)编译?

一。这样是否可能提升网站程序运行性能(当然,和缓存起来相比的效果有待测试。)?

二。能预编译也就意味着不需要视图原始文件。目的:假如不想给别人看,删除视图文件即可。

虽然微软官方对vs不提供这种编译工具,但第三方技术团队为其提供扩展,如图搜索:RazorGenerator(这里我已经装过)

创建一个MVC5项目后,在“程序包管理器控制台”(也可以用“管理解决方案的NuGet程序包”窗口里搜索安装)

执行:Install-Package RazorGenerator.Mvc

可以查看帮助

执行: Get-Help RazorGenerator

(略过截图)

启用

执行:Enable-RazorGenerator

这个命令执行后,每一个扩展名为cshtml都会多一个类文件,如图:

下一步,发布Web,部署网站。删除所有视图文件后,Views文件夹下只有一个Web.config

运行网站ok!(就不截图了)。

当然,还有一个问题要注意:

官方英文:

Optionally specify one of the generators in the first line of your Razor file.

A generator declaration line looks like this:

@* Generator: MvcHelper *@ . If you don‘t specify this, a generator is picked based on convention

(e.g. files under Views are treated as MvcViews)

其实大概意思:

对于Helpr文件,处理方式有所不同。Helper文件一般放在别的文件夹里面。

这时需要在Helper文件的第一行添加 @* Generator: MvcHelper *@ 来声明一下即可!

上面使用“Enable-RazorGenerator”方法,直接全部自动Generator了。你也可以:

蓝色标注的地方,选择“无”时,你发布Web时,就没有视图文件了(省得删了)。

开源地址

https://github.com/RazorGenerator/RazorGenerator

下一篇介绍把如何把“视图”文件,放到单独“类库”项目中……

时间: 2024-10-12 02:38:00

ASP.NET MVC5 视图预编译的相关文章

.NET MVC4 Razor视图预编译

在平时使用.NET MVC中会不会有这样子的需求:某些razor视图,特别是系统后台的视图,不想让用户自行更改或者是觉得razor执行效率不高,需要能够把razor预编译到dll文件中去提高执行效率!(道听途说,具体没测...) VS并不提供razor的预编译,如果需要对razor预编译需要借助第三方工具 SO,Let's Begin! 这里以VS2013为例 依次选择:工具---扩展和更新---左侧选择“联机”---搜索“RazorGenerator”,然后安装 2,对MVC项目中的Razor

[转载].NET MVC4 Razor 视图预编译

平时使用.NET MVC中不乏有类似的需求:某些razor视图,特别是系统后台的视图,不想让用户自行更改,需要通过某种方法把视图模板编译到项目的dll中去. 但是VS并不提供razor的预编译,如果需要对razor预编译需要借助第三方工具:Razor Generator 这里以VS2013为例 1,依次选择:工具---扩展和更新---左侧选择“联机”---搜索“RazorGenerator”,然后安装 2,对MVC项目中的Razor视图右键--属性--生成操作“无”,自定义工具“razorgen

使用RazorGenerator和预编译MVC引擎将Razor视图编译成DLL

Web开发中常常会有跨页面.跨站点.跨项目组的复用模块(界面),最常见的就是如下方所示的Web页面上用于显示登录或用户名的头部模块, 使用ASP.NET MVC开发中,常见的做法是写成部分视图,本文的目的则是进一步将这部分视图预编译成DLL, 这样就可以不直接暴露源码的提供复用组件,适合跨项目组的协作开发. 技术点 Razor Generator(Razor单文件生产器) RazorGenerator.Mvc(Razor视图预编译引擎) 步骤一:安装拓展,项目准备 首先,为VS安装Razor G

asp.net mvc视图引擎

继上周介绍了Razor之后,ASP.NET MVC 现在已有四种主要的视图引擎.其他三种引擎是Spark.NHaml和传统的ASPX文件模板.本文将大致介绍这四种引擎,并着重讨论新的Razor引 擎. ASPX风格的视图引擎可以追溯到遥远的ASP.使 用<%= %>和<%: %>语法的占位符在这类风格中占据了统治地位.随着时间的推移,ASPC控件被加入进来,之后是母版页(Master Page),但这同时也带来 了昂贵的页面生命周期. Spark,在Castle项目的MonoRai

.NET MVC Razor模板预编译(二)

在前面一片文章:<.NET MVC4 Razor视图预编译(一)> 里面我采用的是PrecompiledMvcViewEngineContrib组件进行预编译视图的虚拟地址注册,但是这个组件还是存在少许的bug,如:页面单独定义Layout预编译后不会起作用,而且照旧会使用没有预编译的_ViewStart.cshtml里面定义的Layout 昨天在NPOI作者Tony的群(群号:78142590)里面经过大神老衣的指点,原来是我引用的第三方类库错了,应该引用:RazorGenerator.Mv

体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图

这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配置: 1)在 "dependencies" 中添加: "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": "1.1.0-preview4-final" 2)在"tools&quo

ASP.NET MVC5(二):控制器、视图与模型

前言 本篇博文主要介绍ASP.NET MVC中的三个核心元素:控制器.视图与模型,以下思维导图描述了本文的主要内容. 控制器 控制器简介 在介绍控制器之前,简单的介绍一下MVC工作原理:URL告知路由机制该使用哪个控制器(Controller),调用该控制器中的哪个方法(Action),并为该方法提供需要的参数.控制器响应用户的输入,在响应时修改模型(Model),并决定使用哪个视图(View),并对该视图进行渲染.注意:MVC模式提供的是方法调用结果,而不是动态生成的页面. 以上内容对于初学者

理解 ASP.NET 预编译

一.预编译的优点 1. 由于页和代码文件在第一次被请求时无需编译,因此可以缩短对用户的响应时间.这对于更新频繁的大型网站尤为有用 2. 可以在用户看到网站之前识别编译时的 Bug 3. 可以创建站点的已编译版本,并将该版本部署到成品服务器,而无需使用源代码 二.就地预编译与针对部署的预编译 1. 就地预编译 就地预编译网站可以有效执行用户在请求网页时所发生的编译过程.因此,主要的性能改进在于在第一次请求页时无需对该页进行编译. 编译后的文件存放在%SystemRoot%\Microsoft.NE

Asp.net MVC]Asp.net MVC5系列——添加视图

目录 概述 添加视图 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列--第一个项目 概述 在这一部分我们添加一个新的控制器HelloWorldController类,以便使用视图来向客户端展示HTML格式的响应结果. 我们将使用Razor视图引擎创建一个视图.Razor视图模板以.cshtml扩展名结尾,它提供了一种简洁的方式来创建HTML输出流.Razor视图大大减少了在书写视图模板文件时所需要输入的字符,提供了一个最快捷,最简便的编码方式. (注意:之前版本的asp.