继续以编程方式创建下拉列表的这个问题,我希望我的列表也有几个optgroup列表.这目前可能吗?
我知道我需要将selectList传递给dropDownList,但不知道如何将文本,值,optgroup添加到selectList.
我希望最终结果产生:
<option value="">Please select</option>
<optgroup label="Option A">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</optgroup>
<optgroup label="Option B">
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</optgroup>
</option>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Serge Zab的optgroup下拉助手,可以在这里找到.
这是我的类别表:

如您所见,我有一个类别,类别也可以是类别中的categoryparent.我希望将parentcategorys作为optgroup,将子项作为optgroup的选项.(只能选择孩子)
在我的ViewModel中:
public short? CategoryId { get; set; }
public IEnumerable<ReUzze.Helpers.GroupedSelectListItem> GroupedTypeOptions { get; set; }
Run Code Online (Sandbox Code Playgroud)
在我的控制器中:
[Authorize] // USER NEEDS TO BE AUTHORIZED
public ActionResult Create()
{
ViewBag.DropDownList = ReUzze.Helpers.EnumHelper.SelectListFor<Condition>();
var model = new ReUzze.Models.EntityViewModel();
PutTypeDropDownInto(model);
return View(model);
}
[NonAction]
private void PutTypeDropDownInto(ReUzze.Models.EntityViewModel model)
{
model.GroupedTypeOptions = this.UnitOfWork.CategoryRepository.Get()
.OrderBy(t => t.ParentCategory.Name).ThenBy(t => t.Name)
.Select(t => new GroupedSelectListItem
{
GroupKey = t.ParentId.ToString(),
GroupName = t.ParentCategory.Name,
Text = t.Name,
Value = t.Id.ToString()
}
);
}
Run Code Online (Sandbox Code Playgroud)
在我看来: …