2017-06-01 3 views
0

htmlコントロールのdropdownlistforが選択されたオプションを表示していない箇所がたくさんあります。ユビキタスHTML.DropDownList選択された値を動的に照会することはできますが、デフォルトを選択しないでください。

私のアプリはビューモデルを使用していますが、私が今までに読んだことは、ほとんどの場合、これは変数型が異なるデータ型であるという事実にあります。

私の場合、dropdownlistforはドロップダウンリストの部分に値を設定していますが、現在の値は設定していません。ビューモデルで

@Html.DropDownListFor(m => Model.TypeCaption, Model.Types) 

:ビューで

public MyData() 
{ 
    public int Id { get; set; } 
    public string TypeCaption { get; set; } 
    public string Reference { get; set; } 
    public IEnumerable<SelectListItem> Types { get; set; }  
} 

例データ:

Id = 3762, TypeCaption = "Option2", Reference = "Some value to be displayed" 

IEnumerated<SelectListItem> Types 

Value = "1", Text = "Option1" 
Value = "2", Text = "Option2" 
Value = "3", Text = "Option3" 

だから私は

@Html.DropDownListFor(m => Model.TypeCaption, Model.Types) 
を期待10

Typesプロパティから2番目のSelectlistItemを表示するには、代わりに1番目のSelectlistItemを表示します。 =だから、「2」

私は途方に暮れていますように、なぜこれが起こっているに値:

私は正しい答えを返し

Model.Types.Where(x => x.Text == Model.TypeCaption).Select(x => x.Value) 

を使用して、データ型が同じであることを確認しています。

更新

ただScrobiの答えを試してみましたが、それが何の違いが行われていません。私は解決策を見つけた

+0

「@Html.DropDownListFor(m => m.TypeCaption、Model.Types)」 – Scrobi

+0

Scrobiの回答で更新された質問 – gilesrpa

答えて

0

あなたは

がOK .......ことを、それを呼び出すようにしたい場合は、解決策は、私がSelectListitem配列人口方法を変更することでした。もともと私が使っていた:

IEnumerated<SelectListItem> Types 
Value = "1", Text = "Option1" 
Value = "2", Text = "Option2" 
Value = "3", Text = "Option3" 

を私がすること、これを変更:

IEnumerated<SelectListItem> Types 
Text = "Option1" 
Text = "Option2" 
Text = "Option3" 

これが機能するようになりました。

関連する問題