为什么用.net代码更新cshtml文件时不需要编译?

本文关键字:不需要 编译 文件 cshtml net 代码 更新 为什么 | 更新日期: 2023-09-27 18:14:50

我正在使用Asp.net Mvc,我想知道为什么我不需要在cshtml文件中更新。net代码时编译我的项目?现在,如果我们谈论html'css更新,那么我清楚地理解为什么一个简单的刷新就足够了,但是如何。net代码编译在这些情况下?

假设我有一个视图,我想给它添加一些c#代码比如Datetime.Now.ToString();
现在,我通常可以将这行代码添加到cshtml文件中,保存文件,刷新页面并查看结果,而无需编译。

如果我要做同样的"按书"添加一个属性到我的模型,分配Datetime.Now.ToString()在我的控制器和简单地渲染新的变量,我需要编译我的代码,以看到变化。

这个魔法是如何工作的?如果这么简单,为什么不能用。cs文件来做呢?

注。同样的问题也适用于asp.net应用程序和aspx'ascx页面。

为什么用.net代码更新cshtml文件时不需要编译?

.cshtml文件将被及时编译,即当请求到达这些页面时。

但是控制器是预先编译并存储在项目的DLL文件中。

决定使用哪一个,取决于你的需要。预编译减少了响应时间(因为之前已经编译了代码),但即时编译提供了灵活性。

. NET基础结构是asp.net。净的编译器。它负责编译声明性资源(*)。aspx, *。ascx, *。CSHTML等)转换为可执行代码。

没有魔法,运行时决定何时运行编译器(例如,当资源自上次运行以来发生更改时),然后调用编译器从声明性代码(例如*)中创建命令式代码。Aspx被编译成*.cs)。然后调用常规语言编译器获取包含CIL的*.dll。

第一次访问资源需要一些时间,提前预编译所有声明性资源可能会很方便。

概述:

http://msdn.microsoft.com/en-us/library/vstudio/ms178466 (v = vs.100) . aspx

Precompilation:

http://msdn.microsoft.com/en-us/library/aa983464 (v = vs.110) . aspx