MVC .NET DropdownList 选定值
MVC .NET DropdownList selected value
我的模型下拉列表有问题。我无法设置默认选择值。这是我的代码。
Select 列表定义:
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-int型,grk_Nazwa-string型,选-int型
我看到 selected 与选项值之一相匹配。
现在查看代码:
@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>
我期待着任何帮助。谢谢 :)
你可以使用 List<SelectListItem>
而不是 SelectList
你只需要从中取胜,不再有硬编码字符串,并且你确定 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
.
我认为这是一个错误
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。
我的模型下拉列表有问题。我无法设置默认选择值。这是我的代码。 Select 列表定义:
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-int型,grk_Nazwa-string型,选-int型 我看到 selected 与选项值之一相匹配。
现在查看代码:
@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>
我期待着任何帮助。谢谢 :)
你可以使用 List<SelectListItem>
而不是 SelectList
你只需要从中取胜,不再有硬编码字符串,并且你确定 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
.
我认为这是一个错误
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。