MudBlazor.如何传递一个函数作为一个模态参数?



我试着像这样传递和调用函数,但Visual Studio告诉我:将方法组'OnOk'转换为非委托类型'object'。您是否打算调用该方法?

我TestPage.razor

<div>
Some content..
</div>
@code {
async Task DeleteServer(Server server)
{
var parameters = new DialogParameters { ["server"] = server, 
["Title"] = "Title Text !!!",
["ContentText"] = "Content text !!!",
["OkBtnText"] = "Окейси",
["OkButtonDisabled"] = true,
["OnOk"] = OnOk
};
var dialog = DialogService.Show<Modal>("Delete Server", parameters);
var result = await dialog.Result;
if (!result.Cancelled)
{
Guid.TryParse(result.Data.ToString(), out Guid deletedServer);
Servers.RemoveAll(item => item.Id == deletedServer);
}
}
private void OnOk()
{
Console.WriteLine("Ok Cliked");
}

和Modal.razor

<DialogActions>
<MudButton Color="Color.Success" OnClick="Cancel">Cancel</MudButton>
<MudButton OnClick=@HandleOkClicked>@OkBtnText</MudButton>
</DialogActions>
@code {
[Parameter]
public EventCallback OnOk { get; set; }
private void HandleOkClicked()
{
OnOk.InvokeAsync();
}
}

试试这个:

var parameters = new DialogParameters
{
...
["OnOk"] = EventCallback.Factory.Create(this, OnOk)
};

最新更新