C# Blazor Server如何实现子组件向父组件传递自定义类对象
Blazor子组件回传自定义类对象解决方案
完全可以实现,你当前代码运行异常的核心原因是子组件的EventCallback泛型参数类型不匹配,按以下步骤修改即可:
1 推荐方案:修改子组件EventCallback的泛型类型
Blazor的EventCallback支持泛型绑定任意自定义类型,你只需要将子组件中原本的EventCallback<object>替换为你的自定义类HagClass即可,同时要确保子组件引用了该类的命名空间。
修正后的子组件代码:
@* 顶部引入自定义类所在命名空间 *@ @using Blazor_PH_Par_Child.Shared @code { [Parameter] public string GiveMeDatFromPar { get; set; } // 将泛型从object改为自定义类HagClass [Parameter] public EventCallback<HagClass> OnEmployeeDeleted { get; set; } HagClass x = new HagClass(); public void Delete_Click() { x.parChildSet = "test"; OnEmployeeDeleted.InvokeAsync(x); } } <h3>HagChild</h3> <button type="button" class="btn btn-danger m-1" @onclick="Delete_Click"> Delete </button> <p>hello @GiveMeDatFromPar</p>
修改完成后不需要调整父组件代码,你在父组件的IwasGivendatabackfromclient方法中可以直接拿到完整的HagClass对象,读取对应的属性值。
2 临时兼容方案:父组件做显式类型转换
如果你不想修改子组件的EventCallback定义,也可以在父组件的接收方法中对传入的object对象做显式类型转换,不推荐该方案,缺少编译时类型校验,容易出现运行时错误:
private void IwasGivendatabackfromclient(object x) { var result = x as HagClass; if(result != null) { string text = result.parChildSet; // 后续逻辑 } }
内容的提问来源于stack exchange,提问作者Haggo
相关产品推荐
相关产品推荐

