Это объясняется в Создание и использование компонентов ASP.NET Core Razor , в частности в разделе Параметры компонентов .
[Parameter]
используется для обозначенияпараметры компонента, которые можно установить, когда компонент используется на другой странице. Заимствуя из примера документа, этот компонент не имеет никаких параметров:
<div class="panel panel-default">
<div class="panel-heading">@Title</div>
<div class="panel-body">@ChildContent</div>
<button class="btn btn-primary" @onclick="OnClick">
Trigger a Parent component method
</button>
</div>
@code {
public string Title { get; set; }
public RenderFragment ChildContent { get; set; }
public EventCallback<MouseEventArgs> OnClick { get; set; }
}
Без атрибута [Parameter]
это просто открытые свойства, которые нельзя установить с других страниц. Следующая строка будет недействительной:
<ChildComponent Title="Panel Title from Parent" />
Пока это:
<div class="panel panel-default">
<div class="panel-heading">@Title</div>
<div class="panel-body">@ChildContent</div>
<button class="btn btn-primary" @onclick="OnClick">
Trigger a Parent component method
</button>
</div>
@code {
[Parameter]
public string Title { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
[Parameter]
public EventCallback<MouseEventArgs> OnClick { get; set; }
}
Позволяет нам устанавливать параметры всякий раз, когда мы используем этот компонент:
<ChildComponent Title="Panel Title from Parent"
OnClick="@ShowMessage">
Content of the child component is supplied
by the parent component.
</ChildComponent>