0

クラスをhtml.dropdownlistに追加した後、以下のエラーに直面しています。

エラー:「System.Web.Mvc.HtmlHelper」には「DropDownList」の定義が含まれておらず、最適な拡張メソッドのオーバーロード「System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper、string、string )'にいくつかの無効な引数があります

<li>
                    @Html.LabelFor(m => m.BuildType)
                    @Html.DropDownList("BuildType", new { @class = "BuildType" })
                    @Html.ValidationMessageFor(m => m.BuildType)
                </li>
                <li>@Html.LabelFor(m => m.BuildMode)
                    @Html.DropDownList("BuildMode", new { @class = "BuildMode" })
                    @Html.ValidationMessageFor(m => m.BuildMode) </li>
                <li>
4

3 に答える 3

2

リストのオプションはどこにありますか?IEnumerable<SelectListItem>オブジェクトを介してオプションのリストを提供する必要があります(このオーバーロードを参照)。

したがって、モデルは次のようになります。

public IEnumerable<SelectListItem> BuildModeOptions { get; set; }

そして、あなたのビューはリストをヘルパーに渡します:

@Html.DropDownList("BuildMode", Model.BuildModeOptions, new { @class = "BuildType" })

Forまたは、他のヘルパーでタイプセーフバージョンを使用しているためDropDownListFor、これでも使用します。

@Html.DropDownListFor(m => m.BuildMode, Model.BuildModeOptions, new { @class = "BuildType" })

ただし、Model.BuildModeが選択された値であることに注意してください。Model.BuildModeOptionsはドロップダウンオプション用です。

于 2012-11-14T15:21:35.853 に答える
1

次を使用できます。

@Html.DropDownListFor(m => m.BuildType, (SelectList)Viewbag.YourSelectList, "Select Build type", new { @class = "BuildType" })

また

@Html.DropDownListFor(m => m.BuildType, Model.YourSelectList, "Select Build type", new { @class = "BuildType" })

を使用する場合は@Html.DropDownList、ドロップダウンリストの名前を指定しますが、SelectList自体がありません。箱から出して、ヘルパーはDropDownListの名前(この場合は「BuildType」)を使用して、ViewDataコレクションでSelectListを検索しようとすると思います。

を使用する@Html.DropDownListFor場合、名前は使用しませんがm => m.BuildType、同じ場合にハーコードされた名前を持たないようにするのに役立つlamda式を使用します。

あなたのSelectList(2番目のパラメータ)はViewbag、あなたのプロパティから、またはプロパティから取得できますModel

于 2012-11-14T15:32:15.803 に答える
1

2番目のパラメーターは、ドロップダウンに表示するアイテムのリストである必要があります。

だからそれは次のようになります:

    @Html.DropDownListFor("BuildType", m.yourListofItems, new { @class = "BuildType" })
于 2012-11-14T15:24:38.460 に答える