Blazor - 使用或不使用 @

Hen*_*mbo 2 blazor

这里:SimilarQuestion,公认的答案是使用@与否是基于审美原因。

但在我的用例中似乎存在差异:

<MudSelect T="int" Label="Add to meeting:" Variant="Variant.Outlined" @bind-Value="SelectedTaskId">
    @foreach (var task in TasksNotInMeeting)
    {
        <MudSelectItem Value="task.Id">task.Name</MudSelectItem>
    }
</MudSelect>
Run Code Online (Sandbox Code Playgroud)

使用task.Name而不是@task.Name使输出为“task.Name”。不过,task.Id 似乎有效。当我写这篇文章时,我想这可能是因为我在 html 区域,对吗?

Hen*_*man 5

这可能是因为我在 html 区域,对吗?

是的。

“Razor 引擎”是一个转译器,需要区分 C# 和 HTML 输入。这种切换非常智能且轻便。

当 Razor 需要 C# 时,额外的内容@是无害的(但会造成混乱)。

当 Razor 需要 HTML 并且您想要显示 C# 值时,您需要使用@. 如在<p>@task.Name</p>. 自动检测 C# 表达式或语句的结尾。很久以前,这必须写成<%=task.Name%>

请参阅此链接,了解带有转义规则以及显式和隐式表达式的Razor 语法。