1

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));
4

1 に答える 1

1

フレームワークは、ドロップダウンの名前(この場合)にhtml.ViewData一致するキーを調べて見つけ、代わりにその値を使用しようとするため、選択した値を無視します。propertyName

html.ViewData1つの解決策は、DropDownListを作成する前に変更することです。あなたの場合、次のようなものです。

html.ViewData[propertyName] = source.SelectedValue;

より一般的な例:

html.ViewData['name of your DDL'] = 'The real value you want selected';
于 2012-09-12T11:44:10.027 に答える