如何确保选择列表项属于同一个 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