さて、ここで何時間か読んだ後、すべての解決策を試してみましたが失敗しましたが、この記事も見つかりました。
簡単に言えば。
これが私のビューです(すべての組み合わせ)
@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")