@using
@using 指令用於向生成的視圖添加 C# using 指令:
@using System.IO
@{
var dir = Directory.GetCurrentDirectory();
}
<p>@dir</p>
@page
@page 指令具有不同的效果,具體取決於其所在文件的類型。 指令:
在 .cshtml 文件中表示該文件是 Razor Page**。 有關詳細信息,請參閱自定義路由和 ASP.NET Core 中的 Razor 頁面介紹。
指定 Razor 組件應直接處理請求。 有關詳細信息,請參閱 ASP.NET Core Blazor 路由。
@namespace
設置生成的 Razor 頁面、MVC 視圖或 Razor 組件的類的命名空間。
@layout
@layout 指令指定 Razor 組件的布局。 布局組件用於避免代碼重復和不一致。
@inject
@inject 指令允許 Razor 頁面將服務從服務容器注入到視圖。
@implements
@implements 指令為生成的類實現接口。
以下示例實現 System.IDisposable,以便可以調用 Dispose 方法:
<h1>Example</h1>
@functions {
private bool _isDisposed;
...
public void Dispose() => _isDisposed = true;
}
@code
@code 塊允許 Razor 組件將 C# 成員(字段、屬性和方法)添加到組件中。
@code {
// C# members (fields, properties, and methods)
}
@attribute
@attribute 指令將給定的屬性添加到生成的頁或視圖的類中。 以下示例添加 [Authorize] 屬性:
@attribute [Authorize]
注釋
@{
/* C# comment */
// Another C# comment
}
<!-- HTML comment -->
轉義
如果需要針對@轉義, 使用@@即可, 因為@為razor的語法。
呈現HTML
@("<span>Hello World</span>")
<span>Hello World</span>
try、catch、finally
與C#語法相似, 使用@前綴聲明即可。
{
throw new InvalidOperationException("You did something invalid.");
}
catch (Exception ex)
{
<p>The exception message: @ex.Message</p>
}
finally
{
<p>The finally statement.</p>
}
循環語句for、foreach、while 和 dowhile
- @for
@for (var i = 0; i < people.Length; i++)
{
var person = people[i];
<p>Name: @person.Name</p>
<p>Age: @person.Age</p>
}
- @foreach
@foreach (var person in people)
{
<p>Name: @person.Name</p>
<p>Age: @person.Age</p>
}
- @while
@{ var i = 0; }
@while (i < people.Length)
{
var person = people[i];
<p>Name: @person.Name</p>
<p>Age: @person.Age</p>
i++;
}
- @do while
@{ var i = 0; }
@do
{
var person = people[i];
<p>Name: @person.Name</p>
<p>Age: @person.Age</p>
i++;
} while (i < people.Length);
條件語句 if、else if、else 和 switch
@if (value % 2 == 0)
{
<p>The value was even.</p>
}
@if (value % 2 == 0)
{
<p>The value was even.</p>
}
else if (value >= 1337)
{
<p>The value is large.</p>
}
else
{
<p>The value is odd and small.</p>
}
@switch (value)
{
case 1:
<p>The value is 1!</p>
break;
case 1337:
<p>Your number is 1337!</p>
break;
default:
<p>Your number wasn't 1 or 1337.</p>
break;
}