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。所以我的问题是
- 如果视图被解析为 class,那么 class 如何呈现 html 文档?
- 可以公平地说 ASP.NET 中的视图是 classes 本身,或者它们更像是某种脚本,视图引擎以此为基础形成实际的 class?
可以找到有关 Razor 视图的流程工作原理的很好的描述 here。
基本上,视图文件(在本例中为 cshtml
)在第一次请求给定页面时首先转换为 C# 代码文件。创建的 class 基本上将 cshtml
的所有非 C# 部分转换为 C#。大多数情况下,它只是写出 HTML 文字作为视图 Execute
方法中的响应。
您还可以看到生成的 C# classes 使用 #line
指令来标记原始 csproj
文件的行,以便您可以使用调试器单步执行原始代码并查看抛出异常的位置。
所以是的,视图基本上是 classes(至少在第一次访问后它们变成 classes)并且渲染是由在Execute
视图到响应流的方法。
直到最近我还认为 ASP.Net 视图是文件(如 .aspx 或 .cshtml),它们本身可以包含一些 .Net 代码并使用视图引擎(如 razor)进行解析或 aspx) 到发送到客户端浏览器的 html 文件。后来我发现,这些视图实际上是从System.Web.Mvc.WebViewPage
class 派生出来的classes。除此之外,我注意到有些人自己将视图称为 classes。所以我的问题是
- 如果视图被解析为 class,那么 class 如何呈现 html 文档?
- 可以公平地说 ASP.NET 中的视图是 classes 本身,或者它们更像是某种脚本,视图引擎以此为基础形成实际的 class?
可以找到有关 Razor 视图的流程工作原理的很好的描述 here。
基本上,视图文件(在本例中为 cshtml
)在第一次请求给定页面时首先转换为 C# 代码文件。创建的 class 基本上将 cshtml
的所有非 C# 部分转换为 C#。大多数情况下,它只是写出 HTML 文字作为视图 Execute
方法中的响应。
您还可以看到生成的 C# classes 使用 #line
指令来标记原始 csproj
文件的行,以便您可以使用调试器单步执行原始代码并查看抛出异常的位置。
所以是的,视图基本上是 classes(至少在第一次访问后它们变成 classes)并且渲染是由在Execute
视图到响应流的方法。