RazorEngine.RunCompile()在后台如何工作?

时间:2019-07-23 07:45:59

标签: asp.net asp.net-mvc razorengine

**我的要求是如何在HTML内编译C#代码**

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);

1 个答案:

答案 0 :(得分:0)

这很简短,但应该会有所帮助。配置完所有内容进行调试后,您可以通过添加编译错误来查看最终代码(错误应将您指向生成的c#文件)。通过此技巧,您应该了解引擎的工作原理,还可以尝试使用一些功能并查看代码的外观:

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

这是编译昂贵且执行便宜的原因。因为最后“执行”只是一个方法调用。

所以答案是:您的c#是使用常规c#编译器编译的,那里没有魔术。