使用@Html. DropDownList()添加要选择的 css 类

在做了多年的 webform 之后,我正在构建我的第一个 MVC 应用程序,由于某些原因,我无法做到这一点:

@Html.DropDownList("PriorityID", String.Empty, new {@class="textbox"} )

错误信息:

System.Web.Mvc.HtmlHelper<SPDR.Models.Bug>’不包含 DropDownList的定义,最佳扩展方法重载 System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper, string, System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>, object)有一些无效的参数

非常感谢您的帮助!

190495 次浏览

正如来自错误消息的签名所暗示的那样,第二个参数必须是 IEnumable,更确切地说,是 SelectListItem 的 IEnumable。这是选择的清单。可以使用 SelectList 类型,它是 SelectListItem 的 IEnumable。 对于没有选择的列表:

@Html.DropDownList("PriorityID", new List<SelectListItem>(), new {@class="textbox"} )

For a list with a few choices:

@Html.DropDownList(
"PriorityID",
new List<SelectListItem>
{
new SelectListItem { Text = "High", Value = 1 },
new SelectListItem { Text = "Low",  Value = 0 },
},
new {@class="textbox"})

也许这个教程可以有所帮助: 如何使用 ASP.NET MVC 创建 DropDownList

看着这个控制器,了解了更多关于 MVC 实际上是如何工作的,我能够理解这一点。

我的视图是自动生成的视图之一,包含以下代码行:

@Html.DropDownList("PriorityID", string.Empty)

To add html attributes, I needed to do something like this:

@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class="dropdown" })

再次感谢@Laurent 对你的帮助,我意识到这个问题并没有想象的那么清楚..。

UPDATE:

这样做的一个更好的方法是尽可能使用 下拉列表,这样您就不需要依赖一个神奇的字符串作为 name 属性

@Html.DropDownListFor(x => x.PriorityID, (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class = "dropdown" })

您可以使用 jQuery 来完成

  $("select").addClass("form-control")

在这里,选择 is-html 标记, Form-control is-class 名称

 @Html.DropDownList("SupplierId", "Select Supplier")

and here, SupplierId is ViewBagList, 选择“供应商”-显示名称

如果你在 Asp.NetMVC 中添加的不仅仅是参数,那么下拉列表。 编辑记录或传递视图包中的值时。

使用这将是工作:-

@Html.DropDownList("CurrencyID",null,String.Empty, new { @class = "form-control-mandatory" })

试试这个

 @Html.DropDownList("Id", null, new { @class = "ct-js-select ct-select-lg" })

你可以这样做:

@Html.DropDownList("PriorityID", null, new { @class="form-control"})

尝试以下代码:

@Html.DropDownList("ProductTypeID",null,"",new { @class = "form-control"})

试试这个:

@Html.DropDownList(
"country",
new[] {
new SelectListItem() { Value = "IN", Text = "India" },
new SelectListItem() { Value = "US", Text = "United States" }
},
"Country",
new { @class = "form-control",@selected = Model.Country}
)

试试这个

@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID,  new { @class="dropdown" })

但是,如果你想要一个默认值或没有选项值,那么你必须尝试这一个,因为 String.Empty将选择没有值为您,将作为一个 -select-作为默认选项

@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, String.Empty, new { @class="dropdown" })

在构造函数中有一些选项, 如果你没有下拉列表,你想插入 CSS 类,你可以使用

@Html.DropDownList("Country", null, "Choose-Category", new {@class="form-control"})

在这种情况下,Country 是您的下拉列表的名称,null 是因为您没有从您的控制器传递任何通用列表“ Select-Category”是选中的项目,并且是 CSS 类中的最后一个 如果你不想选择任何默认选项,那么简单地将“选择-分类”替换为“”