1

例 #1 (これは機能します)

@Html.DropDownListFor(m => m.State.Id, Model.States)

このような最初の例のコントローラーで SelectList を作成しています。

var states = Repository.GetStates();
var statesSelectList = new SelectList(states, "Id", "Name");

//model.States is a SelectList
model.States = statesSelectList;

例 #2 (これはロード時に選択された値を設定しません)

@Html.DropDownListFor(m => m.State.Id, new SelectList(Model.States, "Id", "Name"))

2 番目の例のビューで SelectList を作成しています。コントローラーは次のようになります。

//model.States is a List<State>.
model.States = Repository.GetStates();

私が見逃している単純なものがあるに違いないようです。他に何か明確にする必要がある場合はお知らせください。ありがとう。

4

2 に答える 2

3

ビュー モデルにプロパティを追加します。

private int? stateId;
public int StateId
{
    get { return stateId ?? State.Id; }
    set { stateId = value; }
}

次に、Razor ビューで次のようにします。

@Html.DropDownListFor(m => m.StateId, new SelectList(Model.States, "Id", "Name"))

最後に、コントローラーの POST アクションで:

model.State = Repository.GetState(model.StateId);
于 2013-02-14T16:31:25.617 に答える
2

簡単です、はい。明らかな番号。DropDownListForのようなネストされたオブジェクトにはバインドしませんm => m.State.Id

次のようなより基本的な関係用に設計されています。m => m.Id

于 2013-02-14T16:12:02.033 に答える