1

私は簡単なテストモデルを持っています:

  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のバグ?

更新: この本当のバグ。見る

4

2 に答える 2

8

選択項目のリストを作成するときは、代わりにこれを試してください。

var items = new SelectList(
        new[] 
        {
            new { Value = "1", Text = "one" },
            new { Value = "2", Text = "two" },
            new { Value = "3", Text = "three" },
        }, 
        "Value", 
        "Text", 
        Model.Value
    )

これが発生する理由の説明は次のとおりです。https://stackoverflow.com/a/11045737/486434

于 2012-09-03T13:59:44.397 に答える
1

@Model InnerModel でこれを変更します

@Html.DropDownListFor(m=>m.InnerModel.Value,items,"no_selected")

@Html.DropDownListFor(m=>m.Value,items,"no_selected")
于 2012-09-03T13:47:24.260 に答える