Razor Pages @functions 块与代码块

Jon*_*ood 5 c# asp.net-core razor-pages

在 Razor Pages cshtml文件中,有人可以告诉我以下内容有什么区别:

@functions
{
    // Etc.
}
Run Code Online (Sandbox Code Playgroud)

和:

@{
    // Etc.
}
Run Code Online (Sandbox Code Playgroud)

这看起来几乎是同一件事。

Mah*_*san 2

根据官方文档

@

Razor 代码块以 开头@并用 括起来{}。与表达式不同,代码块内的 C# 代码不会呈现。视图中的代码块和表达式共享相同的作用域并按顺序定义:

@{
    var quote = "The future depends on what you do today. - Mahatma Gandhi";
}

<p>@quote</p>

@{
    quote = "Hate cannot drive out hate, only love can do that. - Martin Luther King, Jr.";
}

<p>@quote</p>
Run Code Online (Sandbox Code Playgroud)

@代码

@code块使 Razor 组件能够将 C# 成员(字段、属性和方法)添加到组件

@code{
    // C# members (fields, properties, and methods)
}
Run Code Online (Sandbox Code Playgroud)

@功能

@functions指令允许将 C# 成员(字段、属性和方法)添加到生成的类中:

@functions {
    // C# members (fields, properties, and methods)
}
Run Code Online (Sandbox Code Playgroud)

在 Razor 组件中,使用@codeover@functions添加 C# 成员。

  • 差不多,因为“@code”是“@functions”的别名。明显的区别是“@code”和“@functions”可以在“.razor”文件中使用,但是建议使用“@code”而不是后者。对于“cshtml”文件,只能使用“@functions”。`@{ ...}` 可以在任何一个中使用,但与前面不同的是,它不是用于向生成的类添加属性、方法或字段。 (3认同)