自定义SelectListItem时,如何指定Context生成的选项为选中项?
如何在自定义SelectListItem集合中指定选中项?
如果你用自定义的SelectListItem集合构建下拉框,想要把从_context中获取的某个选项设为选中项,有两种简单的实现方式:
方法一:生成集合时直接设置选中状态
在通过LINQ生成SelectListItem的过程中,直接判断当前项是否为目标选中项,设置Selected属性:
// 替换成你实际要选中的ItemID值 int targetItemID = 10; var dropDownData = await _context.DataTable .Select(u => new SelectListItem { Value = u.ItemID.ToString(), Text = u.ItemName, Selected = u.ItemID == targetItemID // 匹配目标ID时设置为选中 }) .ToListAsync(); // 添加默认选项 dropDownData.Add(new SelectListItem() { Value = "", Text = "-- Select -- "}); ViewData["MyDropDown"] = dropDownData;
方法二:生成集合后再设置选中项
先完整生成SelectListItem集合,再通过查找匹配项来设置选中状态:
int targetItemID = 10; var dropDownData = await _context.DataTable .Select(u => new SelectListItem { Value = u.ItemID.ToString(), Text = u.ItemName }) .ToListAsync(); // 查找目标选项并设置选中 var targetOption = dropDownData.FirstOrDefault(item => item.Value == targetItemID.ToString()); if (targetOption != null) { targetOption.Selected = true; } // 添加默认选项 dropDownData.Add(new SelectListItem() { Value = "", Text = "-- Select -- "}); ViewData["MyDropDown"] = dropDownData;
注意:如果你的下拉框中存在多个可能被标记为选中的项,建议先遍历集合将所有项的
Selected设为false,再设置目标项的选中状态,避免出现多个选中项的异常。
内容的提问来源于stack exchange,提问作者Diomedes
相关产品推荐
相关产品推荐

