我有以下选择列表
public SelectList StaffList { get; set; }
我正在分配以下内容,
inspectorCorrespondences.StaffList = new SelectList(userDetails, "Id", "FullName");
但我想添加另一个SelectList项目
var systemGeneratedUser = new SelectListItem() { Value = "-1", Text = "System Generated" };
我该怎么做?
答案 0 :(得分:3)
这不一定是最优雅的解决方案,但是如果要添加另一个SelectListItem,则需要将SelectList的项目转换为SelectListItem列表。
var myItems = new List<SelectListItem>();
myItems.Add(new SelectListItem() { Text = "AA", Value = "11" } );
var mySelectList = new SelectList(myItems);
((List<SelectListItem>)mySelectList.Items).Add(new SelectListItem() { Text = "BB", Value = "22" });
答案 1 :(得分:1)
根据the documentation,您似乎需要使用值初始化SelectList
而不是添加它们。将可枚举的SelectListItem
传递给构造函数似乎是预期的方式。
看起来你已经在userDetails
已经是枚举的意义上已经这样做了吗?如果是这样,它是什么类型的枚举?您可能需要添加一行或两行代码以将其转换为SelectListItem
个对象的枚举,将其添加到该对象,然后使用它来初始化SelectList
。也许是这样的:
var listItems = userDetails.Select(u => new SelectListItem { Value = u.Id, Text = u.FullName }).ToList();
listItems.Add(new SelectListItem() { Value = "-1", Text = "System Generated" });
// or perhaps .Insert() at position 0 instead?
inspectorCorrespondences.StaffList = new SelectList(listItems, "Value", "Text");