如何确保选择列表项属于同一个 SelectListGroup?
How to make sure that selectlist items belong to the same SelectListGroup?
我正在试验 <optgroup>
元素,并试图使多个项目属于同一个 optgroup。
我的代码:
public async Task<ActionResult> GetStatsView()
{
var users = await _administrationServiceAPI.GetPersons();
var tanks = await _administrationServiceAPI.GetTanks();
var list = new List<SelectListItem>();
foreach (var u in users.Payload)
{
SelectListItem item = new SelectListItem {Text = u.Name, Value = u.Id.ToString(), Group = new SelectListGroup {Name = "Users"} };
list.Add(item);
}
foreach (var u in tanks.Payload)
{
SelectListItem item = new SelectListItem { Text = u.Name, Value = u.Id.ToString(), Group = new SelectListGroup { Name = "Tanks" } };
list.Add(item);
}
@ViewBag.MyList = list;
return View("StatsView");
}
查看:
@Html.DropDownList("MyList")
结果:
想要的结果是:
用户
用户名
用户名
用户名
坦克
坦克
坦克
坦克
我该怎么做?
要使其正常工作,您需要重复使用 SelectListGroup
。像这样使用它:
var usersGroup = new SelectListGroup {Name = "Users"};
foreach (var u in users.Payload)
{
SelectListItem item = new SelectListItem {Text = u.Name, Value = u.Id.ToString(), Group = usersGroup };
list.Add(item);
}
当然对于坦克来说也是如此。
名称相同没关系,使用的实例必须在各种项目中相同才能将它们组合成一个optgroup
。
我正在试验 <optgroup>
元素,并试图使多个项目属于同一个 optgroup。
我的代码:
public async Task<ActionResult> GetStatsView()
{
var users = await _administrationServiceAPI.GetPersons();
var tanks = await _administrationServiceAPI.GetTanks();
var list = new List<SelectListItem>();
foreach (var u in users.Payload)
{
SelectListItem item = new SelectListItem {Text = u.Name, Value = u.Id.ToString(), Group = new SelectListGroup {Name = "Users"} };
list.Add(item);
}
foreach (var u in tanks.Payload)
{
SelectListItem item = new SelectListItem { Text = u.Name, Value = u.Id.ToString(), Group = new SelectListGroup { Name = "Tanks" } };
list.Add(item);
}
@ViewBag.MyList = list;
return View("StatsView");
}
查看:
@Html.DropDownList("MyList")
结果:
想要的结果是:
用户
用户名
用户名
用户名
坦克
坦克
坦克
坦克
我该怎么做?
要使其正常工作,您需要重复使用 SelectListGroup
。像这样使用它:
var usersGroup = new SelectListGroup {Name = "Users"};
foreach (var u in users.Payload)
{
SelectListItem item = new SelectListItem {Text = u.Name, Value = u.Id.ToString(), Group = usersGroup };
list.Add(item);
}
当然对于坦克来说也是如此。
名称相同没关系,使用的实例必须在各种项目中相同才能将它们组合成一个optgroup
。