如何从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
相关产品推荐
相关产品推荐

