Atualmente eu tenho isso:
@foreach (var rol in Rollenlist)
{
<InputCheckbox class="form-check" @[email protected] @onclick="(() => RolSelected(rol.Id.Value))" />
}
e
void RolSelected(int id)
{
...
}
Eu gostaria de usar o 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>
Mas isto não está funcionando.
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
Como posso consertar isso?
Primeiro erro
@bind-Checked
é a abreviatura de usarChecked
andCheckedChanged
, é por isso que você está vendo o primeiro erro porque não pode usar os dois.Segundo erro
CheckedChanged
é umEventCallback<T>
assim: -T
deve ser declarado, ou sejaT="bool"
, .CheckedChanged
doT
evento é acionada. Se você colocar o método manipulador comoCheckedChanged="RolSelected"
, o método receberá implicitamente oT
valor alterado que o evento dispara.No entanto, como você precisa passar parâmetros adicionais para o método, você precisa passar explicitamente o valor alterado para o método junto com outros parâmetros.
Nota : Se você usar
CheckedChanged
, deverá alterar a variável colocadaChecked
, pois ela não será atualizada automaticamente como ao usar@bind-Checked
. A menos que você esteja lidando com ligações em vários componentes.