これは数回前に尋ねられましたが、既存のソリューションは適切なパターンではなくハックのように見えます。Html.DropDownListにバグがあり、選択された値が反映されていませんか?
私は単純なドロップダウンリストを持っています。私はそれをデータで設定し、アイテムをあらかじめ選択しています。私は「データ部分を取り込む」に成功していますが、あらかじめ選択した優先項目を取得するのに失敗しています。
私はASP.NET MVC 3 RC2を使用しています。
重要なコードビット:
{
// Bunch of code
CategoryOptions = new SelectList(categories, "Id", "Slug", article.Category.Id);
}
は今... CategoryOptionsはそうのようなHTMLヘルパーに渡される:
@Html.DropDownListFor(a => a.Category, Model.CategoryOptions)
私がヘルパーに渡される値を見てきましたアイテムの1つが選択された値が真に設定されていることを確認しました。
しかし、それはヘルパーによって生成されているHtmlに反映されていません。 ...タグのどれもselected = "selected"属性を持っていません。
私は、コードを少し調べるためにリフレクターを使用して、この行(SelectExtensions.SelectInternal)はdiceyなります
item.Selected = (item.Value != null) ? set.Contains(item.Value) : set.Contains(item.Text);
私はここで何か間違ったことをやっていますか?またはフレームワーク(ASP.NET MVC 3 RC2)がここに不具合があります。
回答ありがとうございました...私は質問を投稿してから数分後に見つけた回答も掲載しました。これがあなたにも役立つことを願っています。 – kidoman