首页 > 解决方案 > RazorEngine.RunCompile() 如何在幕后工作?

问题描述

我的问题是它如何C#HTML

string path = string.Format("{0}\\Templates\\RazorExample.cshtml", Directory.GetCurrentDirectory());
string template = System.Text.Encoding.UTF8.GetString(System.IO.File.ReadAllBytes(path));
string returnedView = Engine.Razor.RunCompile(template, "report", typeof(ViewModels.ReportViewModel), reportViewModel, null);
File.WriteAllText(fileName, returnedView);

标签: c#asp.netasp.net-mvcrazorengine

解决方案


这非常简短,但应该有所帮助。当一切都配置为调试时,您可以通过添加编译错误来查看最终代码(错误应该指向生成的 c# 文件)。通过这个技巧,您应该了解引擎是如何工作的,您还可以尝试使用几个功能并查看代码的外观:

  • 基本上,所有标记都转换为 Stream.WriteLine 调用。
  • C# 代码不变(这基本上是你的问题)
  • 代码已编译
  • 程序集已加载
  • 方法被执行

这就是编译成本高而执行成本低的原因。因为最终“执行”只是一个方法调用。

所以答案是:你的 c# 是用常规的 c# 编译器编译的,没有魔法。


推荐阅读