好了,几个小时阅读的东西在这里,失败尝试所有的解决方案之后,还发现这篇文章 ,我认为它会救我的命...什么都没有。
长话短说。
这是我的看法(所有组合)
@Html.DropDownList("yearDropDown",(IEnumerable<SelectListItem>)ViewBag.yearDropDown)
@Html.DropDownList("yearDropDownxxx",(IEnumerable<SelectListItem>)ViewBag.yearDropDown)
@Html.DropDownList("yearDropDown",(<SelectList>)ViewBag.yearDropDown)
@Html.DropDownList("yearDropDown")
这里是我的控制器
public ActionResult(int year)
{
var years = new int[] { 2007, 2008, 2009, 2010, 2011, 2012 }
.Select(x => new SelectListItem {
Text = x.ToString(),
Value = x.ToString(),
Selected=x==year }).Distinct().ToList();
years.Insert(0, new SelectListItem { Value = null, Text = "ALL YEARS" });
ViewBag.yearDropDown = new SelectList(years, "Value", "Text", years.Where(x => x.Selected).FirstOrDefault());
return View();
}
这是我提供的HTML。 选择无处可寻。
<select id="yearDropDown" name="yearDropDown"><option value="">ALL YEARS</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
</select>
不用说,但我会的,我检查了我的收藏和的SelectList实际上有填充传递给控制器选择一年SelectedValue属性。 但是,当我呈现在视图,它进入第一个选项。
拜托,我需要的解决方案为DropDownList
,而不是DropDownListFor
。 我强调这一点,因为我在这里看到的其他人询问同样的帮助和一堆人给他们的指示,几乎命令他们,用DropDownListFor。 还有一个原因是我需要使用的DropDownList。
解决方法:查看我自己的答案。 然而,这里是我做了简单的修改。
控制器:
ViewBag.yearDropDown = years;
视图:
@Html.DropDownList("yearDropDown")