【问题标题】:MudBlazor. How to pass a function as a modal parameter?泥浆。如何将函数作为模态参数传递?
【发布时间】:2022-06-12 00:22:10
【问题描述】:

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

我的 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();
    }
}

【问题讨论】:

    标签: c# .net razor blazor mudblazor


    【解决方案1】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2014-08-02
      • 2012-12-27
      • 2019-07-20
      相关资源
      最近更新 更多