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

Lee*_*ley 71 asp.net-mvc razor

经过多年的webforms后,我正在构建我的第一个MVC应用程序,由于某种原因,我无法完成这项工作:

@Html.DropDownList("PriorityID", String.Empty, new {@class="textbox"} )
Run Code Online (Sandbox Code Playgroud)

错误信息:

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)有一些无效的参数

任何帮助非常感谢!

Lee*_*ley 101

看看控制器,并且更多地了解MVC实际上是如何工作的,我能够理解这一点.

我的观点是自动生成的观点之一,并包含以下代码行:

@Html.DropDownList("PriorityID", string.Empty)
Run Code Online (Sandbox Code Playgroud)

要添加html属性,我需要做这样的事情:

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

再次感谢@Laurent的帮助,我意识到这个问题并不像它本来的那样清晰......

更新:

执行此操作的更好方法是尽可能使用DropDownListFor,这样您就不会依赖于魔术字符串作为name属性

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

  • 我正在使用你的解决方案(我的视图也是自动生成的),但是在编辑视图中,我已经丢失了我选择的值,你能帮助我吗?@ Html.DropDownList("StateGroupID",(IEnumerable <SelectListItem>)ViewBag.StateGroupID,String.Empty,new {@class ="form-control"}) (4认同)
  • 当我编辑记录时,dropdownlist为空,它应该绑定到一个值.我通过在第二个参数@ Html.DropDownList("StateGroupID",null,String.Empty,new {@class ="form-control"})传递null值找到了解决方案 (2认同)

Lau*_*tin 37

由于错误消息中的签名暗示,第二个参数必须是IEnumerable,更具体地说,是IEnumerable的SelectListItem.这是选择清单.您可以使用SelectList类型,它是SelectListItem的IEnumerable.对于没有选择的列表:

@Html.DropDownList("PriorityID", new List<SelectListItem>(), new {@class="textbox"} )
Run Code Online (Sandbox Code Playgroud)

有一些选择的列表:

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

也许本教程可以提供帮助:如何使用ASP.NET MVC创建DropDownList


小智 19

如果你在Asp.Net MVC中添加多个参数ya下拉列表.在视图包中编辑记录或传递值时.

使用它将是工作: -

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

  • 这个答案节省了我的时间,谢谢@mohita (2认同)

mk *_*hal 7

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

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

在这种情况下,Country是你的下拉列表的名称,null是因为你没有从你的控制器传递任何通用列表"选择类别"是选择项目和CSS类中的最后一个如果你不想选择任何默认选项所以简单用""替换"选择类别"


Pra*_*M P 6

你可以使用jQuery来做到这一点

  $("select").addClass("form-control")
Run Code Online (Sandbox Code Playgroud)

在这里,选择is-html标签,Form-control is- class name

 @Html.DropDownList("SupplierId", "Select Supplier")
Run Code Online (Sandbox Code Playgroud)

在这里,SupplierId是ViewBagList,选择供应商是 - 显示名称