4

'DropDown.cshtml'という名前の次のエディターテンプレートがあります。パーツは正常に機能し、テンプレートは、からlist必要なものを取得するために行ったブードゥーを使用します。コントローラは、ビューモデル内のすべての選択リストをに配置します。リスト側に問題はありません。SelectListViewDataViewData

@{
    var list = this.GetModelSelectList();
}
@Html.DropDownListFor(m => Model, list)

このテンプレートは、次のような外部キービューモデルのプロパティで使用します。

[Required]
[UIHint("DropDown", "MVC", "SelectListName", "JobLevelSelectList")]
[Display(Name = "Job Level")]
public Guid? JobLevelId { get; set; }

public SelectList JobLevelSelectList { get; set; }

コントローラでJobLevelIdは、ビューを実行する直前に正しい値がありますが、レンダリングされたselect要素で選択したアイテムはありません。むしろ、選択リストの最初の項目が常に選択されます。

DropDownListForエディターテンプレートで使用するときにプロパティ値を無視し、直接呼び出すと正常に機能するのはなぜですか?

4

1 に答える 1

3

残念ながら、これはMVC3の既知のバグです (修正されたかどうかを確認するために MVC 4 ベータ版で試したことはありません)。

私が使用した回避策は、DropDownListFor がバインドされているコレクションに応じてSelectedプロパティを手動で設定することです。これは理想的ではありませんが、機能しました。

于 2012-04-17T13:50:03.030 に答える