私は 'DropDown.cshtml'という以下のエディタテンプレートを持っています。 list
の部分はうまく動作し、テンプレートには、SelectList
をViewData
から取得するためのいくつかのブードーを使用しています。コントローラは、ビューモデル内のすべての選択リストをViewData
に配置します。リストサイドには何も問題はありません。DropDownListForがエディタテンプレートで選択した値を認識しないのはなぜですか?
@{
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
はエディタテンプレートで使用されてもプロパティ値を無視しますが、直接呼び出されたときに正常に動作するのはなぜですか?
http://stackoverflow.com/questions/10039006/mvc-dropdownlist-selectedvalue-not-displaying-correctlyを参照してください。 – RickAndMSFT
@RickAndMSFT、私はその質問に答えが現実には何も表示されません。受け入れられた答えは、 'DropDownListFor'のラムダのモデルプロパティがselectリストの*選択されたid *を上書きすることです。それは私の生のDDLではなく、私のエディタテンプレートでのみ無視される 'ラムダ値'の私の問題で私を助けません。 – ProfK
'ExpressionHelper.GetExpressionText()'(ヘルパーがプロパティ名を見つけるのに使う)は 'm => Model'では動作しません。 – bhamlin