如何将selectlistitem添加到选择列表

时间:2014-04-02 12:21:38

标签: c# .net asp.net-mvc

我有以下选择列表

 public SelectList StaffList { get; set; }

我正在分配以下内容,

inspectorCorrespondences.StaffList = new SelectList(userDetails, "Id", "FullName");

但我想添加另一个SelectList项目

 var systemGeneratedUser = new SelectListItem() { Value = "-1", Text = "System Generated" };

我该怎么做?

2 个答案:

答案 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");