Blazor拖拽组件传入空TestSuiteModel列表报错问题求助
问题分析与解决
先看你代码里的核心问题:
- 类型不匹配引发歧义错误:你把
MySecondList定义成List<TestSuiteModel>,但初始化时却添加new Value()对象——TestSuiteModel和Value是完全不同的类型,编译器无法识别你的意图,所以报错。 - Dropzone数据源绑定逻辑错误:拖拽组件的
Items需要接收列表类型(对应原先的List<TodoItem>),现在你的TestSuiteModel里的value字段才是List<Value>,这才是和原逻辑匹配的数据源类型。
正确实现方式
方式一:沿用TestSuiteModel结构
如果要保持和第一个组件一致的结构,第二个组件的数据源应该这么定义:
// 初始化空的TestSuiteModel,其value属性为空白List<Value> TestSuiteModel MyThirdList = new TestSuiteModel() { value = new List<Value>() };
对应的Dropzone组件绑定代码:
<div class="col"> <p>In Progress</p> <Dropzone Items="MyThirdList.value" Class="h-100"> <ChildContent> <div class="card" style="border-left: 3px solid orange"> <div class="card-body"> <h6>@context.id</h6> </div> </div> </ChildContent> </Dropzone> </div>
方式二:直接使用List作为数据源
如果不需要TestSuiteModel的count属性,也可以直接把数据源定义成List<Value>,和原List<TodoItem>逻辑完全对齐:
// 空白List<Value>,和原先空的MyThirdList逻辑一致 public List<Value> MyThirdList = new List<Value>();
对应的Dropzone绑定代码:
<div class="col"> <p>In Progress</p> <Dropzone Items="MyThirdList" Class="h-100"> <ChildContent> <div class="card" style="border-left: 3px solid orange"> <div class="card-body"> <h6>@context.id</h6> </div> </div> </ChildContent> </Dropzone> </div>
额外注意事项
- 确保绑定的
Items是可修改的列表,如果接口返回的MyFirstList.value是只读集合,建议先转成新的List<Value>,避免拖拽时无法修改列表。 - 若要让列表变化时自动更新UI,可考虑用
ObservableCollection<Value>替代普通List<Value>(组件支持双向绑定的前提下)。
内容的提问来源于stack exchange,提问作者elektra
相关产品推荐
相关产品推荐

