我在Blazor观看教程。然后,我遇到了这段代码,但似乎无法在Internet上找到它,或者我认为我没有使用正确的术语搜索至少。
@code{
[Parameter]
public IList<Todo> Todo {get; set;}
}
仅在blazor中排它,还是在c#中可用。 请给一些参考。预先感谢。
答案 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中的属性上以查看其标准名称或导航至该名称。