私は簡単なテストモデルを持っています:
public class MyModel
{
public InnerModel InnerModel { get; set; }
}
public class InnerModel
{
public int Value { get; set; }
}
コントローラーで:
public ActionResult Index()
{
var model = new MyModel();
model.InnerModel = new InnerModel { Value = 3 };
return View("MyModelView", model);
}
MyModelView:
@model MyModel
@{
var items = new List<SelectListItem>()
{
new SelectListItem {Text = "one", Value = "1"},
new SelectListItem {Text = "two", Value = "2"},
new SelectListItem {Text = "three", Value = "3"}
}; }
@Html.DropDownListFor(m=>m.InnerModel.Value,items,"no_selected")
ページの読み込み時に、選択したアイテムが表示されます:
それは良いです。
しかし、 EditorTemplate InnerModel.cshtmlを追加すると:
@model InnerModel
@{
var items = new List<SelectListItem>()
{
new SelectListItem {Text = "one", Value = "1"},
new SelectListItem {Text = "two", Value = "2"},
new SelectListItem {Text = "three", Value = "3"}
}; }
@Html.DropDownListFor(m=>m.Value,items,"no_selected")
MyModelViewを変更します。
@model MyModel
@Html.EditorFor(m=>m.InnerModel,"InnerModel")
ページが読み込まれると、次のように表示されます。
なんで?MVCのバグ?
更新: この本当のバグ。見る