ASP.NET MVC5 视图预编译

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时,就没有视图文件了(省得删了)。

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

 
 
分类: ASP.NET MVC
 

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

  1. ASP.NET Core Razor 视图预编译、动态编译

    0x01 前言 ASP.NET Core在默认发布情况下,会启动预编译将试图编译成xx.Views.dll,也许在视图中打算修改一处很细小的地方我们需要再重新编译视图进行发布.下面我将从 ASP.NE ...

  2. .NET MVC4 Razor视图预编译(一)

    在平时使用.NET MVC中不乏有类似的需求:某些razor视图,特别是系统后台的视图,不想让用户自行更改,需要通过某种方法把视图模板编译到项目的dll中去. 但是VS并不提供razor的预编译,如果 ...

  3. Asp.Net Core 禁用预编译

    在.NET Core 2 Web API应用程序中,MS VS 2017中的发布到文件夹功能产生: <ProjectAssembly>.PrecompiledViews.dll <P ...

  4. ASP.NET Core 3.1 Razor 视图预编译、动态编译

    1.安装NuGet包 Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 2.Startup.cs 配置 public ...

  5. ASP.NET MVC5 视图相关学习

    MVC Razor模板引擎中3个重要的方法:@RenderBody.@RenderPage.@RenderSection 1.@RenderBody 在Razor引擎中布局页面类似于asp.net中的 ...

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

    Web开发中常常会有跨页面.跨站点.跨项目组的复用模块(界面),最常见的就是如下方所示的Web页面上用于显示登录或用户名的头部模块, 使用ASP.NET MVC开发中,常见的做法是写成部分视图,本文的 ...

  7. asp.net mvc视图引擎

    继上周介绍了Razor之后,ASP.NET MVC 现在已有四种主要的视图引擎.其他三种引擎是Spark.NHaml和传统的ASPX文件模板.本文将大致介绍这四种引擎,并着重讨论新的Razor引 擎. ...

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

    在前面一片文章:<.NET MVC4 Razor视图预编译(一)> 里面我采用的是PrecompiledMvcViewEngineContrib组件进行预编译视图的虚拟地址注册,但是这个组 ...

  9. asp.net mvc视图中使用entitySet类型数据时提示出错

    asp.net mvc5视图中使用entitySet类型数据时提示以下错误 检查了一下引用,发现已经引用了System.Data.Linq了,可是还是一直提示出错, 后来发现还需要在Views文件夹下 ...

随机推荐

  1. MYSQL-用户权限的验证过程(转)

    知识点 因为MySQL是使用User和Host两个字段来确定用户身份的,这样就带来一个问题,就是一个客户端到底属于哪个host. 如果一个客户端同时匹配几个Host,对用户的确定将按照下面的优先级来排 ...

  2. poj 2565 Ants (KM+思维)

    Ants Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4125   Accepted: 1258   Special Ju ...

  3. Android变化如何破解几场金

    我们在玩游戏的总会遇到一些东西需要购买,但是,我们可能要花钱,那么我们应该怎么办呢?这与游戏的插.我们在这里谈论的Android游戏,搜索互联网上的移动端游戏插件,您可能会发现一个叫段:八门神器.ap ...

  4. asp.net学习之 数据绑定控件--List数据绑定控件

    原文:asp.net学习之 数据绑定控件--List数据绑定控件 List控件(如 CheckBoxList.DropDownList.ListBox 和 RadioButtonList 类)继承自L ...

  5. 我也来谈javascript高级编程之:javascript函数编译过程

    前言 题目有点大,其实也就是手痒...跟大家来扯一下javascript编译过程. 那么到底什么是“编译”呢 这个...本人文笔太差,我还是直接举例子吧. 相信玩过js童鞋应该都看过下面这样一个面试题 ...

  6. 【百度地图API】自行获取区域经纬度的工具

    原文:[百度地图API]自行获取区域经纬度的工具 摘要:上一章教大家如何建立自己的行政区域地图.这次为大家提供一个,可视化选择区域,并且能自动生成经纬度代码的工具.工具的源代码完全公开,并且做了详尽的 ...

  7. NDMCDB数据库hang住故障分析 - cursor: pin S wait on X

    问题描写叙述: 上午刚刚到办公室,就有监控人员邮件反馈,昨晚NDMCDB407数据库被重新启动过,让我分析一下数据库重新启动的原因.因为昨晚业务有版本号上线,所以短信警告关闭了,所以没有短信下发到我手 ...

  8. C#中使用ref 和 out 的一点认识

    ref 通常我们向方法中传递的是值,方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不会受到影响. 这种情况是通常的,当然还有另外一种情况,我们向方法传递 ...

  9. Content-Type boundary 问题

    我并不知道问题怎么描述清楚一些. 事情是这样的,使用  Microsoft Dynamics CRM Server 2016 做CRM系统的时候用到 使用 Web API 执行批处理操作(参见SDK或 ...

  10. The Swift Programming Language-官方教程精译Swift(4)字符串和字符

    String 是一个有序的字符集合,例如 "hello, world", "albatross".Swift 字符串通过 String 类型来表示,也可以表示为 ...