2015-04-15 75 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> 

林期待的任何帮助。谢谢:)

回答

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只是为了查看选中的参数是否在debbuging时不指向null。您可以看到:SelectList selectList = new SelectList(productGroups,“grk_Id”,“grk_Nazwa”,selected);有选择的参数没有selectedItem – Paulie