好吧,在这里阅读了几个小时后,尝试了所有解决方案均未成功,还发现了这篇文章,我认为它可以挽救我的生命……什么也没有。
长话短说。
这是我的观点(所有组合)
@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>
不用说,但我会的,我签入了我的 Watch 和 SelectList 实际上填充了 SelectedValue 属性,其中填充了传递给控制器的选定年份。但是当我在视图中渲染时,它会转到第一个选项。
请,我需要解决方案DropDownList
,而不是DropDownListFor
。我之所以强调这一点,是因为我在这里看到其他人寻求同样的帮助,并且一群人给了他们指示,并且几乎命令他们使用 DropDownListFor。我需要使用 DropDownList 是有原因的。
解决方案:看看我自己的答案。但是,这是我所做的简单更改。
控制器:
ViewBag.yearDropDown = years;
看法:
@Html.DropDownList("yearDropDown")