目前我有这个:
@foreach (var rol in Rollenlist)
{
<InputCheckbox class="form-check" @[email protected] @onclick="(() => RolSelected(rol.Id.Value))" />
}
和
void RolSelected(int id)
{
...
}
我想使用 MudCheckbox:
<MudCheckBox @bind-Checked="@rol.IsSelected" Label="@rol.Name" LabelPosition="LabelPosition.Start" Color="Color.Primary"
Size="MudBlazor.Size.Large" CheckedChanged="RolSelected(rol.Id.Value)"></MudCheckBox>
但它不起作用。
RZ1OO1O: The component parameter 'CheckedChanged' is used two or more times for this component. Parameters must be unique (case-insensitive). The component parameter 'CheckedChanged' is
generated by the '@bind-Checked' directive attribute.
CS1503: Argument 2: cannot convert from 'void' to 'Microsoft.AspNetCore.Components.EventCallback
我怎样才能解决这个问题?
第一个错误
@bind-Checked
Checked
是使用and的简写CheckedChanged
,这就是您看到第一个错误的原因,因为您不能同时使用两者。第二个错误
CheckedChanged
是EventCallback<T>
这样:-T
应该声明,即T="bool"
.CheckedChanged
触发T
事件负载。如果您像这样放置处理程序方法,则该方法将隐式接收事件触发的CheckedChanged="RolSelected"
更改值。T
但是,由于您需要将其他参数传递给该方法,因此您需要将更改后的值与其他参数一起显式传递给该方法。
注意:如果您使用
CheckedChanged
,则必须更改已放入的变量Checked
,因为它不会像使用时那样自动更新@bind-Checked
。除非您正在处理跨多个组件的绑定。