我有一个DropDownList
包含十年(从2010年到2020年)的范围,如下所示:
var YearList = new List<int>(Enumerable.Range(DateTime.Now.Year - 5, ((DateTime.Now.Year + 3) - 2008) + 1));
ViewBag.YearList = YearList;
但是这是我的问题,我希望选择默认值并在我提交我的信息时保留此值,并希望使用List<SelectListItem>
类型,因为它更实用。
一旦进入这种类型,我只会这样做以保持选定的值:
foreach (SelectListItem item in list)
if (item.Value == str)
item.Selected = true;
如何将List<int>
转换为List<SelectListItem>
?
答案 0 :(得分:11)
尝试使用Linq转换它:
List<SelectListItem> item = YearList.ConvertAll(a =>
{
return new SelectListItem()
{
Text = a.ToString(),
Value = a.ToString(),
Selected = false
};
});
然后该项将是SelectListItem的列表
答案 1 :(得分:7)
您可以使用LINQ将项目从List<int>
转换为List<SelectListItem>
,如下所示:
var items = list.Select(year => new SelectListItem
{
Text = year.ToString(),
Value = year.ToString()
});
答案 2 :(得分:4)
现在有一种更干净的方法可以做到这一点:
SelectList yearSelectList = new SelectList(YearList, "Id", "Description");
Id是列表项的值的名称,Description是文本。如果愿意,可以在此之后添加参数以指定所选项目。您要做的全部传递给您希望转换为选择列表的ICollection!
在您看来,您可以这样做:
@Html.DropDownListFor(m => m.YearListItemId,
yearSelectList as SelectList, "-- Select Year --",
new { id = "YearListItem", @class= "form-control", @name=
"YearListItem" })