2012-04-15 9 views
4

私は 'DropDown.cshtml'という以下のエディタテンプレートを持っています。 listの部分はうまく動作し、テンプレートには、SelectListViewDataから取得するためのいくつかのブードーを使用しています。コントローラは、ビューモデル内のすべての選択リストを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はエディタテンプレートで使用されてもプロパティ値を無視しますが、直接呼び出されたときに正常に動作するのはなぜですか?

+0

http://stackoverflow.com/questions/10039006/mvc-dropdownlist-selectedvalue-not-displaying-correctlyを参照してください。 – RickAndMSFT

+0

@RickAndMSFT、私はその質問に答えが現実には何も表示されません。受け入れられた答えは、 'DropDownListFor'のラムダのモデルプロパティがselectリストの*選択されたid *を上書きすることです。それは私の生のDDLではなく、私のエディタテンプレートでのみ無視される 'ラムダ値'の私の問題で私を助けません。 – ProfK

+1

'ExpressionHelper.GetExpressionText()'(ヘルパーがプロパティ名を見つけるのに使う)は 'm => Model'では動作しません。 – bhamlin

答えて

3

これは残念ながらMVC3のa known bugです(MVC 4ベータ版では修正されていません)。

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

+0

ありがとうございました。私のエディタテンプレート内でこの回避策を実行できるかどうか確認してください。 – ProfK

関連する問題