SelectExtension の DropDownList メソッドを使用すると、奇妙な動作が見つかりました。Selectedプロパティが「true」に設定されている IEnumerable<SelectListItem> を作成します。ただし、次のメソッドに渡すと、Selectedプロパティが「false」にリセットされるため、ドロップダウン コントロールで適切な項目が選択されません。
public static MvcHtmlString DropDownList(この HtmlHelper htmlHelper、文字列名、IEnumerable selectList);
SelectList クラスを使用して SelectedValue プロパティを指定しましたが、まだ適切な <option> タグが選択されていません。
選択した値を維持する方法についてのアイデアはありますか?
ハックを書いたが、解決策を好む
以下は、MVC から出力された Html を使用する前に、選択したオプションを変更するためのコード ハックです。私はこの解決策が好きではありませんが、他にどうすればよいかわかりません。
// the following is a hack due to a precived MVC 3 bug
var html = SelectExtensions.DropDownList(helper, propertyName, source).ToHtmlString();
html = html.Replace("selected=\"selected\"", string.Empty);
html = html.Replace(string.Format("value=\"{0}\"", source.SelectedValue), string.Format("value=\"{0}\" selected=\"selected\"", source.SelectedValue));