Razor页面父组件向子组件传自定义类型列表遇类型转换错误
解决Blazor父子组件列表传递的类型转换错误
错误原因
子组件的childList参数被定义为List<System.Type>,但父组件传递的是List<Class1>,这两个属于不同的泛型实例类型,无法直接隐式转换,触发编译错误。
修改方案
将子组件改造为泛型组件,让参数类型和处理逻辑的泛型保持统一,具体修改如下:
子组件(Component1.razor)
<button onclick="@childFunction">Process List</button> @code{ // 定义泛型参数,让组件支持任意类型的列表 @typeparam T [Parameter] public List<T> childList{get; set;} = null!; public void childFunction() { ProcessList(childList); } public static void ProcessList<TItem>(List<TItem> childList) { // 编写你的列表处理逻辑 ... } }
父组件调用调整
父组件无需额外修改,Blazor会自动根据传递的myList类型推断泛型参数T:
@if (myList.Any()) { <Component1 childList="@myList"/> } @code{ List<Class1> myList = new List<Class1>(); // 向myList中添加数据的逻辑 ... }
补充说明
如果需要强制指定泛型类型,也可以在调用组件时显式声明:
<Component1 T="Class1" childList="@myList"/>
内容的提问来源于stack exchange,提问作者AsM
相关产品推荐
相关产品推荐

