WebViewPageclass在ASP.NetMVC中是如何转化为html的?

How is WebViewPage class transformed into html in ASP.Net MVC?

直到最近我还认为 ASP.Net 视图是文件(如 .aspx 或 .cshtml),它们本身可以包含一些 .Net 代码并使用视图引擎(如 razor)进行解析或 aspx) 到发送到客户端浏览器的 html 文件。后来我发现,这些视图实际上是从System.Web.Mvc.WebViewPage class 派生出来的classes。除此之外,我注意到有些人自己将视图称为 classes。所以我的问题是

  1. 如果视图被解析为 class,那么 class 如何呈现 html 文档?
  2. 可以公平地说 ASP.NET 中的视图是 classes 本身,或者它们更像是某种脚本,视图引擎以此为基础形成实际的 class?

可以找到有关 Razor 视图的流程工作原理的很好的描述 here

基本上,视图文件(在本例中为 cshtml)在第一次请求给定页面时首先转换为 C# 代码文件。创建的 class 基本上将 cshtml 的所有非 C# 部分转换为 C#。大多数情况下,它只是写出 HTML 文字作为视图 Execute 方法中的响应。

您还可以看到生成的 C# classes 使用 #line 指令来标记原始 csproj 文件的行,以便您可以使用调试器单步执行原始代码并查看抛出异常的位置。

所以是的,视图基本上是 classes(至少在第一次访问后它们变成 classes)并且渲染是由在Execute 视图到响应流的方法。