【问题标题】:How does C# run inside a Razor view without compilation?C# 如何在没有编译的情况下在 Razor 视图中运行?
【发布时间】:2018-07-05 11:26:57
【问题描述】:

我似乎无法在网上找到答案。

由于 C# 是一种编译语言,Razor 视图中的代码如何能够在无需开发人员重新构建的情况下执行?

例如,如果我使用以下代码加载页面:@{string test = "123";}

但是然后将代码更改为:@{string test = "test";}

我如何不需要重建?此外,允许这种情况发生的东西是 C# 功能还是 MVC 功能?

【问题讨论】:

  • Razor 文件在调用视图时在运行时编译(它们被缓存,但如果视图更改,缓存会被清除)-.cs 文件存储在您的临时 ASP.NET 中文件夹

标签: c# asp.net-mvc razor compilation


【解决方案1】:

剃须刀引擎基本上“编译”视图。 像这样的……

@model Person
<html>
  <p>
  @Model.FirstName
  </p>
</html>

实际上是编译成类中的方法。我不记得它调用的确切函数,但它看起来像这样:

class RazorPage<T>
{
    T Model;

    void Page
    {
        Write("<html>");
        Write("  <p>");
        Write(Model.FirstName);
        Write("  </p>");
        Write("</html>");
    }
}

【讨论】:

  • 是的,但为什么不重建?
  • 如果在服务器上编辑了 Razor 文件,MVC 会检测到更改,仅重建该文件,然后继续进行,就像什么都没发生一样。这是一个非常方便的系统。
猜你喜欢
  • 2011-08-09
  • 2021-03-12
  • 2021-07-16
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 2018-05-30
  • 2011-01-21
  • 1970-01-01
相关资源
最近更新 更多