将类添加到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>
答案 0 :(得分:2)
您的列表选项在哪里?您需要通过IEnumerable<SelectListItem>
对象提供选项列表(请参阅this overload)。
所以你的模型会有这样的东西:
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用于您的下拉选项。
答案 1 :(得分:1)
第二个参数应该是您要在下拉列表中显示的项目列表。
所以它看起来像:
@Html.DropDownListFor("BuildType", m.yourListofItems, new { @class = "BuildType" })
答案 2 :(得分: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
时,您不使用名称,而是使用lamda表达式m => m.BuildType
来帮助您在相同的情况下不使用带有编码的名称。
您的SelectList
(第二个参数)可以从Viewbag
或您Model
的媒体资源中抓取。