10

私は見つけることができない解決策を持つ非常に単純な問題を抱えています。

次のモデルがあるとします。

public class InfoViewModel
{
    public SelectList States { get; set; }

    [DisplayName("State")]
    public string State { get; set; }
}

私の見解では、以下は正常に機能します。

@Html.DropDownListFor(m => m.State, Model.States)

ただし、これをエディター テンプレート (「SelectList」という名前) に取り込もうとすると、次のようになります。

@model System.String
@Html.DropDownListFor(m => m, ViewData["selectList"])

そしてEditorFor、ドロップダウン リストを作成するために使用します。

@Html.EditorFor(m => m.State, "SelectList", new { selectList = Model.States })

次のエラーで失敗します。

'System.Web.Mvc.HtmlHelper<string>' does not contain a definition for 
'DropDownListFor' and the best extension method overload 
'System.Web.Mvc.Html.SelectExtensions.DropDownListFor<TModel,TProperty>
(System.Web.Mvc.HtmlHelper<TModel>, 
System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>, 
System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>)' 
has some invalid arguments

この二つの違いが分からなくて困っています。トラブルシューティングのためにさまざまな回避策を試しましたが、同じエラーまたは別のエラーが発生します。

前もって感謝します。

4

1 に答える 1

15

そのようなオーバーロードはありません:

@Html.DropDownListFor(m => m, ViewData["selectList"])

DropDownListForヘルパーの 2 番目のパラメーターはSelectList. そう:

@Html.DropDownListFor(m => m, (SelectList)ViewData["selectList"])
于 2011-06-12T08:07:27.230 に答える