什么是c#中的[Parameter]属性

时间:2019-10-23 07:13:33

标签: c# blazor

我在Blazor观看教程。然后,我遇到了这段代码,但似乎无法在Internet上找到它,或者我认为我没有使用正确的术语搜索至少。

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

仅在blazor中排它,还是在c#中可用。 请给一些参考。预先感谢。

2 个答案:

答案 0 :(得分:7)

这在Create and use ASP.NET Core Razor components中进行了解释,特别是在Component Parameters部分中。

[Parameter]用于标记在另一页中使用组件时可以设置的组件参数。从doc示例中借用的该组件没有任何参数:

<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>

答案 1 :(得分:5)

C#中的所有属性都必须引用定义该属性 somewhere 的类型。 Blazor代码仍然是C#。

在这种情况下,我认为它是指Microsoft.AspNetCore.Components.ParameterAttribute-该文档当前为MIA,但随着时间的推移可能会有所改善。 Blazor documentation中有更多详细信息。

通常,如果您前面有代码(在可能的情况下,通常在观看教程时通常是个好主意),则可以将鼠标悬停在Visual Studio中的属性上以查看其标准名称或导航至该名称。