ASP.NET Core中DropdownList返回Undefined问题求助
问题解决建议
问题根源
出现下拉框选项数量正确但显示undefined的核心原因:
- 后端返回的
SelectList对象序列化后,前端期望的Value/Text字段名可能不匹配(ASP.NET Core默认采用驼峰式序列化,字段会变成value/text); - 或者
Stock实体类的Name属性不存在、拼写错误,导致SelectList生成的文本值为空; - 也可能是
SelectList的嵌套结构导致前端无法直接获取到目标字段。
解决方法
方法1:返回简化的匿名对象列表(推荐)
修改后端GetStockByCat方法,直接构造前端需要的键值对结构,避免SelectList的复杂嵌套:
[HttpPost] public IActionResult GetStockByCat(int CatId) { var stocks = _dbcontext.Stock.Where(s => s.CategoryId == CatId).ToList(); // 直接生成前端需要的结构 var stockOptions = stocks.Select(s => new { Value = s.StockId.ToString(), Text = s.Name }); return Json(stockOptions); }
前端代码无需修改,此时返回的JSON数据会直接包含Value和Text字段,与前端遍历逻辑完全匹配。
方法2:适配前端字段名(若坚持使用SelectList)
如果不想修改后端,先通过浏览器开发者工具的Network面板查看GetStockByCat请求返回的JSON数据,确认字段名是否为驼峰式的value和text,然后修改前端循环逻辑:
for (var x = 0; x < data.length; x++) { markup += '<option value="' + data[x].value + '">' + data[x].text + '</option>'; }
额外检查点
- 确认
Stock实体类中存在Name属性,且数据库中该字段有有效数据,无拼写错误(比如是否误写为StockName); - 用浏览器开发者工具查看请求返回的JSON内容,直接验证每个选项的字段值是否正确,这是快速定位问题的关键。
内容的提问来源于stack exchange,提问作者user3309231
相关产品推荐
相关产品推荐

