2
ViewBag.WList = new SelectList(_bdb.BMW.OrderBy(o => o.NAME).AsEnumerable(), "ID", "NAME");

这就是我在控制器中使用视图代码下方设置我的选择列表的方式。

@Html.DropDownList("WOptions", (SelectList)ViewBag.WList, "Select an option", new { style = "width:250px;" })

我的数据库中有一个表,我也无法添加新记录,我需要将其作为主要选项列表进行引用,此外,我还需要添加 2 条新记录来引用异常。

基本上在我的创建表单上,我有我的选项列表和类型列表,因为其中一个选项不合适,因此已将 2 个新选项添加​​为类型列表形式的不同下拉列表。

记录或显示它基本上不是问题,但我的剑道列表上有一个基于上面代码的过滤器。

我想知道如果我可以使用现有代码或需要使用不同的方法,将 2 个选项添加到病房列表中的最佳方法是什么?

另外我试过,

SelectList options = new SelectList(_bdb.BMW.OrderBy(o => o.NAME).AsEnumerable(), "ID", "NAME");
        options.ToList().Insert(11, (new SelectListItem { Text = "Example1", Value = "11" }));
        options.ToList().Insert(22, (new SelectListItem { Text = "Example2", Value = "22" }));
ViewBag.WList = options;

虽然这仍然显示原始选择列表,但它不显示新项目,这是迄今为止唯一没有导致错误的变体。

任何想法或建议将不胜感激。

4

1 回答 1

2

Linq 扩展 .ToList() 返回一个新的 List 实例。所以options.ToList()不引用内部列表,这就是为什么后面的两项没有插入到内部列表中。四处走走,

var bmws = _bdb.BMW.OrderBy(o => o.NAME).Select(x => new { ID = x.ID, NAME = x.NAME }).ToList();
bmws.Insert(11, (new { ID = "11", NAME = "Example1" }));
bmws.Insert(22, (new { ID = "22", NAME = "Example2" }));
var options = new SelectList(bmws.AsEnumerable(), "ID", "NAME");

我没有测试过代码,但这应该可以解决问题。希望这可以帮助。

于 2013-04-16T14:03:03.607 回答