Что такое атрибут [Параметр] в c # - PullRequest
1 голос
/ 23 октября 2019

Я смотрел учебник в Blazor. Затем я наткнулся на этот код, и мне кажется, что я не могу найти его в Интернете, или мне кажется, что я не использую правильные термины для поиска по крайней мере.

@code{
[Parameter]
    public IList<Todo> Todo {get; set;}
}

Это только эксклюзивно в блазоре илидоступен в C #. Пожалуйста, дайте несколько ссылок. Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 23 октября 2019

Это объясняется в Создание и использование компонентов 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>
5 голосов
/ 23 октября 2019

Все атрибуты в C # должны ссылаться на тип, определяющий этот атрибут где-то . Этот код Blazor все еще C #.

В этом случае, я полагаю, это относится к Microsoft.AspNetCore.Components.ParameterAttribute - документация в настоящее время MIA, но это может со временем улучшиться,Более подробная информация содержится в документации Blazor .

В общем, если перед вами стоит код (как правило, хорошая идея при просмотре учебного пособия, если это вообще возможно), вы можете навести указатель мыши. над атрибутом в Visual Studio, чтобы увидеть его полное имя или перейти к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...