MVC 5.1 で新しいHtml.EnumDropDownListFor
拡張メソッドを使用すると、コントローラー アクションに渡すルート属性に基づいて、選択した値がドロップダウンで更新されないという問題が発生します。
意見
@model MemberReconWebDemo.Models.EnvironmentsModel
@{
ViewBag.Title = "Environments";
}
<h2>Environments</h2>
<div class="row">
<div class="col-md-12">
@Html.EnumDropDownListFor(p => p.Environment)
@Model.Environment.ToString()
</div>
</div>
コントローラ アクション
[Route("environments/{environment?}")]
public ActionResult Environments(string environment)
{
Domain.Environment env;
Enum.TryParse(environment, true, out env);
return View(new EnvironmentsModel{Environment = env});
}
オプションの属性なしでルートに移動しModel.Environment
、コントローラー アクションでプロパティを静的な値に設定すると、選択した値は問題なく表示されます。
有効なルート属性値を渡し、それをModel.Environment
プロパティに割り当てた場合、レンダリング時にドロップダウンがプロパティ値に更新されません。プロパティにデフォルトの列挙値以外の値があることを確認したにもかかわらずです。 .