0

ASP.NET MVC 2.0 を使用していますが、MVC 3.0 でも問題があったようです。

基本的に、「複雑な」プロパティ名がある場合、Html.DropDownListForは設定しませんSelectListItem.Selected = true

したがって、これは機能します(どこにViewData.StatesありますIEnumerable<SelectListItem>)。

<td><%= Html.DropDownListFor( m => m.State, ViewData.States ) %></td>

しかし、これはしません:

<td><%= Html.DropDownListFor( m => m.CaseFields[i].State, ViewData.States ) %></td>

回答者が問題を正しく説明したこのQAを見ましたが、私の場合SelectList、引数として使用する彼の解決策はDropDownListFor機能しません-まったく同じ結果が得られます(<option>要素のロードですが、単一のselected="selected"属性ではありません)。

私は を再実装DropDownListForしたいと思っていますが、回避策を知っている人がいたらぜひ教えてください!

4

1 に答える 1

0

DropDownListForCodePlex の MVC プロジェクトからソースをコピーし、いくつかの変更を加えて再実装することで、これを解決しました。

私が行った主な変更は、への呼び出しViewData.Eval(MVC 2 および 3 ではインデックス付きプロパティをサポートしていません) をに置き換えることでした。これはModelMetadata.FromLambdaExpression().Modelうまく機能します。

DropDownListForまた、数値ではなく文字列 (名前) 値を使用する場合にのみ列挙値をバインドするため、数値列挙値のサポートも追加しました。

于 2013-03-25T18:32:36.967 に答える