2015-04-15 4 views
0

У меня проблема с выпадающим списком для моей модели. Я не могу установить выбранное значение по умолчанию. Вот мой код. Выберите определение списка:MVC .NET DropdownList выбранное значение

var productGroups = db.sl_GrupaKh.AsNoTracking() 
     .Where(g => g.kh__Kontrahent.Any()) 
     .Select(n => new {n.grk_Id, n.grk_Nazwa }) 
     .OrderBy(n => n.grk_Nazwa).ToList(); 
     productGroups.Add(new { grk_Id = 0, grk_Nazwa = "(" + Resources.Resources.NoneLabel + ")" }); 
     productGroups.Add(new { grk_Id = -1, grk_Nazwa = "(" + Resources.Resources.AnyLabel + ")" }); 

     var selectedItem = productGroups.SingleOrDefault(x=>x.grk_Id==selected); 
     SelectList selectList = new SelectList(productGroups,"grk_Id","grk_Nazwa",selected); 

grk_Id - целый типа, тип grk_Nazwa-строка, выбранный - целый тип Я наблюдал, что выбранный соответствует один из вариантов значения.

Теперь посмотреть код:

@Html.DropDownListFor(m => m.customerMenu, Model.customerMenu, 
new {@class="myClass" }) 

И вывод:

<select class="dasdas" id="customerMenu" name="customerMenu"> 
<option value="2">Drogerie</option> 
<option value="3">Fabryki</option> 
<option value="4">Hurtownie</option> 
<option value="5">Importerzy</option> 
<option value="1">Podstawowa</option> 
<option value="6">Sklepy</option> 
<option value="0">(brak)</option> 
<option value="-1">(dowolna)</option> 
</select> 

Im с нетерпением жду любой помощи. Спасибо :)

ответ

1

Вместо SelectList вы можете использовать List<SelectListItem> у вас есть только чтобы выиграть от этого, не более жестко закодированных строк, и вы уверены, что Selected деталь true когда вы хотите.

var selectedItem = productGroups.SingleOrDefault(x=>x.grk_Id==selected); 
List<SelectListItem> selectList = productGroups.Select(c => new SelectListItem 
     { 
      Text = c.grk_Nazwa, 
      Value = c.grk_Id, 
      Selected = selectedItem != null && selectedItem.grk_Id == c.grk_Id 
     }); 

Примечание:, если вы не можете изменить SelectList попробовать это SO answer, это поможет вам конвертировать из List<SelectListItem> в SelectList.

+0

Я попробую это. Благодарю. :) – Paulie

+0

Это сработало! Большое спасибо. – Paulie

0

Я думаю, что здесь ошибка

SelectList selectList = new SelectList(productGroups,"grk_Id","grk_Nazwa",selected); 

Это

var selectedItem = productGroups.SingleOrDefault(x=>x.grk_Id==selected); 

должен быть изменен на этой

var selectedItem = productGroups.SingleOrDefault(x=>x.grk_Id==selected).grk_Id; 

Может быть, с NullReferenceCheck.

+0

Решение @adricadar намного лучше. – Barada

+0

Но я использовал selectedItem только для того, чтобы увидеть, не выбрал ли выбранный параметр значение null при дебюгерации. Как вы можете видеть: SelectList selectList = новый SelectList (productGroups, «grk_Id», «grk_Nazwa», выбран); выбранный параметр не выбранItem – Paulie

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