You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从MudDialog子组件向父组件回传数据

MudDialog子组件向父组件回传数据的实现方法

1. 先修正可访问的Data类

首先要确保Data类的成员能被外部组件访问,修改为public权限:

public class Data
{
    public string Name { get; set; }
    public int Age { get; set; }
}

2. 实现子对话框组件

在子对话框组件中,通过注入的MudDialogInstance,在确认操作时将Data对象通过Close方法回传:

@inject MudDialogInstance DialogInstance

<MudDialog>
    <DialogContent>
        <MudTextField @bind-Value="formData.Name" Label="姓名" />
        <MudNumericField @bind-Value="formData.Age" Label="年龄" Min="0" />
    </DialogContent>
    <DialogActions>
        <MudButton OnClick="CancelDialog">取消</MudButton>
        <MudButton Color="Color.Primary" OnClick="ConfirmDialog">确认</MudButton>
    </DialogActions>
</MudDialog>

@code {
    private Data formData = new();

    private void CancelDialog()
    {
        DialogInstance.Cancel();
    }

    private void ConfirmDialog()
    {
        // 用DialogResult.Ok封装数据并回传
        DialogInstance.Close(DialogResult.Ok(formData));
    }
}

3. 父组件接收回传数据

父组件通过IDialogService打开对话框,等待返回结果后提取Data对象:

@inject IDialogService DialogService
<MudButton Color="Color.Primary" OnClick="OpenInputDialog">打开输入对话框</MudButton>

@code {
    private async Task OpenInputDialog()
    {
        // 替换为你的子对话框组件类型
        var dialogRef = DialogService.Show<YourDialogComponent>("填写信息");
        var dialogResult = await dialogRef.Result;

        if (!dialogResult.Canceled)
        {
            // 强转获取回传的Data对象
            var receivedData = (Data)dialogResult.Data;
            // 此处可对数据进行后续处理
            Console.WriteLine($"收到数据:姓名={receivedData.Name},年龄={receivedData.Age}");
        }
    }
}

关键说明

  • 使用DialogResult.Ok(T)封装需要回传的数据,Cancel()则标记对话框被取消,不会返回有效数据
  • 父组件必须确保Data类的成员是public,否则无法访问回传的数据
  • 如果需要传递复杂数据结构,同样可以用此方式封装回传

内容的提问来源于stack exchange,提问作者Łukasz Maśliński

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:22:09