2013-04-16 2 views
1
ViewBag.WList = new SelectList(_bdb.BMW.OrderBy(o => o.NAME).AsEnumerable(), "ID", "NAME"); 

Вот как я настроил свой список избранных в контроллере под кодом вида.Выбираем манипуляции, чтобы объединить 2 набора в одном списке

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

У меня есть таблица в моей базе данных, которую я не могу добавлять новые записи тоже, и который мне нужно ссылаться как мой основной список опций, кроме того, мне нужно добавить 2 новых записей в ссылки исключения.

В основном на моей форме создания У меня есть список опций и список типов, поскольку 1 из вариантов не подходит, поэтому в качестве списка типов добавлено 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; 

Хотя это до сих пор отображения оригинального SelectList он не отображает новые элементы, и это до сих пор единственный вариант, который не вызывает ошибок.

Любые идеи или предложения были бы высоко оценены.

ответ

1

Расширение 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"); 

Я не тестировал код, но это должно сделать трюк. Надеюсь, это поможет.

+0

Работал как шарм thx. – Myzifer

Смежные вопросы