3 か国のリストにデータを入力し、デフォルトで 2 番目の項目を選択しようとする単純なコードがあります。何らかの理由で、@Html.DropDownList が画面の 2 番目の項目を初期化していません。誰かがこのコードの問題点を指摘できますか?
public class DemoController : Controller
{
[HttpGet]
public ActionResult Test()
{
List<SelectListItem> ddlCountries = new List<SelectListItem>();
SelectListItem item1 = new SelectListItem { Selected = false, Text = "USA", Value = "1" };
SelectListItem item2 = new SelectListItem { Selected = true, Text = "Ireland", Value = "2" };
SelectListItem item3 = new SelectListItem { Selected = false, Text = "UK", Value = "3" };
ddlCountries.Add(item1);
ddlCountries.Add(item2);
ddlCountries.Add(item3);
ViewBag.ddlCountries = ddlCountries;
return View();
}
[HttpPost]
public string Test(string ddlCountries)
{
return "The selected Value was " + ddlCountries;
}
}
以下は、画面上の出力です。
クイックウォッチ ウィンドウは、「選択済み」プロパティが値「2」に正しく設定されていることを示していますが、画面にはこれが反映されていません。
ビューのコードは次のとおりです
@{
ViewBag.Title = "Test";
}
<h2>Test</h2>
@using (Html.BeginForm("Test", "Demo", FormMethod.Post))
{
@Html.DropDownList("ddlCountries", (IEnumerable<SelectListItem>) ViewBag.ddlCountries)
<br />
<input type="submit" value="submit" />
}