在这里: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>使用task.Name代替@task.Name使输出成为"task.Name“。不过,task.Id似乎起作用了。当我写这篇文章的时候,我想这可能是因为我在html区域,对吗?
发布于 2021-08-24 07:03:56
可能是因为我在一个html区域,对吗?
是。
“Razor”是一个转换程序,需要区分C#和HTML。这种切换是非常聪明和轻量级的。
当Razor期望C#时,额外的@是无害的(但杂乱无章)。
当Razor希望使用HTML并希望显示C#值时,需要使用@进行切换。就像在<p>@task.Name</p>一样。自动检测C#表达式或语句的结尾。很久以前,这必须写成<%=task.Name%>
请参阅带有转义规则和显式和隐式表达式的Razor语法的此链接。
发布于 2021-08-24 07:06:39
请参阅Microsoft的正式文档:
https://learn.microsoft.com/en-us/aspnet/core/blazor/components/?view=aspnetcore-5.0#markup-1
摘录:
组件成员用于使用以@符号开头的C#表达式来呈现逻辑。例如,C#字段是通过在字段名的前缀@中呈现的。
发布于 2021-08-24 07:56:45
Blazor将c#和html结合在一起,如果使用@,则指的是正在编写c#代码的blazor。如果您不使用@ on代码,则使用纯文本。在您的示例中,只要将Task.name作为文本,就应该使用@,因为您引用的是一个对象。
https://stackoverflow.com/questions/68903045
复制相似问题