Razor Pages级联下拉框重复值问题求助
问题诊断与解决方案
核心问题
你的getCountriesAndPlants实体类将Country单独设为主键,但同一个国家对应多个工厂时,主键重复会导致Entity Framework把所有同国家的工厂实体都识别为第一个实体的副本,最终返回的列表里所有PlantName都是第一个值,这就是下拉框重复显示第一个内容的原因。
具体修复步骤
1. 修改实体类主键定义
将getCountriesAndPlants改为复合主键,因为Country和PlantName组合起来才是唯一标识:
public partial class getCountriesAndPlants { [Key, Column(Order = 0)] public string Country { get; set; } [Key, Column(Order = 1)] public string PlantName { get; set; } }
2. 验证查询逻辑
修改后,GetPlants方法的查询会正确返回不同的工厂数据,EF将不再返回重复内容。
3. 前端脚本检查(可选)
确认前端遍历的字段名和JSON返回的字段一致,C#对象序列化为JSON时默认是小驼峰格式,当前脚本里的item.country和item.plantName是正确的,无需修改。
额外建议
- 实体类名建议使用PascalCase(比如
GetCountriesAndPlants),符合C#编码规范。 - 检查数据库中
GetCountriesAndPlants视图/表的数据,确保同一个国家下的PlantName是唯一的,避免复合主键冲突。
内容的提问来源于stack exchange,提问作者Khar
相关产品推荐
相关产品推荐

