C# 如何将SelectListItem转换为SelectList并分配给mvc下拉列表

C# 如何将SelectListItem转换为SelectList并分配给mvc下拉列表,c#,asp.net-mvc,C#,Asp.net Mvc,以下是选择列表项的集合: 我想将此选择项转换为SelectList并将其分配给mvc dropdownlist List<SelectListItem> Genderitems = new List<SelectListItem>(); Genderitems.Add(new SelectListItem() { Text = "Female", Value = "Female" }); Genderitems.Add(new SelectListI

以下是选择列表项的集合: 我想将此选择项转换为SelectList并将其分配给mvc dropdownlist

List<SelectListItem>     Genderitems     =    new List<SelectListItem>();
Genderitems.Add(new SelectListItem() { Text = "Female", Value = "Female" });
Genderitems.Add(new SelectListItem() { Text = "Male", Value = "Male" });
Genderitems.Add(new SelectListItem() { Text = "Other Gender", Value = "Other Gender" });
Genderitems.Add(new SelectListItem() { Text = "Unspecified or Unknown", Value = "Unspecified or Unknown" });
List Genderitems=new List();
添加(新的SelectListItem(){Text=“Female”,Value=“Female”});
添加(新的SelectListItem(){Text=“Male”,Value=“Male”});
添加(新的SelectListItem(){Text=“Other-Gender”,Value=“Other-Gender”});
添加(新的SelectListItem(){Text=“未指定或未知”,Value=“未指定或未知”});

无论是
SelectList
还是
List
都实现了一个接口
IEnumerable
。用于创建下拉列表的扩展方法如下所示:

public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList);

public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList);
公共静态MvcHtmlString下拉列表(此HtmlHelper HtmlHelper,字符串名称,IEnumerable selectList);
公共静态MvcHtmlString DropDownListFor(此HtmlHelper、表达式表达式、IEnumerable selectList);

正如您所见,这两种扩展方法都接受
IEnumerable
而不是
SelectList
,因此,正如@StephenMuecke所指出的,您无需将
List
转换为
SelectList

SelectList
List
都实现了接口
IEnumerable
。用于创建下拉列表的扩展方法如下所示:

public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList);

public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList);
公共静态MvcHtmlString下拉列表(此HtmlHelper HtmlHelper,字符串名称,IEnumerable selectList);
公共静态MvcHtmlString DropDownListFor(此HtmlHelper、表达式表达式、IEnumerable selectList);

正如您所看到的,这两种扩展方法都接受
IEnumerable
而不是
SelectList
,因此,正如@StephenMuecke所指出的,您无需将
List
转换为
SelectList

,您可能正在寻找它

List<SelectListItem>     Genderitems     =    new List<SelectListItem>();
Genderitems.Add(new SelectListItem() { Text = "Female", Value = "Female" });
Genderitems.Add(new SelectListItem() { Text = "Male", Value = "Male" });
Genderitems.Add(new SelectListItem() { Text = "Other Gender", Value = "Other Gender" });
Genderitems.Add(new SelectListItem() { Text = "Unspecified or Unknown", Value = "Unspecified or Unknown" });
SelectList sl = new SelectList(Genderitems, "Value", "Text");
ViewBag.GenderList = sl;
在其他情况下,你可以

@Html.DropDownListFor(x=>x.Gender, ViewBag.GenderList as SelectList, " ", new { id = "drpGender"})

也许你在找这个

List<SelectListItem>     Genderitems     =    new List<SelectListItem>();
Genderitems.Add(new SelectListItem() { Text = "Female", Value = "Female" });
Genderitems.Add(new SelectListItem() { Text = "Male", Value = "Male" });
Genderitems.Add(new SelectListItem() { Text = "Other Gender", Value = "Other Gender" });
Genderitems.Add(new SelectListItem() { Text = "Unspecified or Unknown", Value = "Unspecified or Unknown" });
SelectList sl = new SelectList(Genderitems, "Value", "Text");
ViewBag.GenderList = sl;
在其他情况下,你可以

@Html.DropDownListFor(x=>x.Gender, ViewBag.GenderList as SelectList, " ", new { id = "drpGender"})

第二个参数中的
DropDownList()
DropDownListFor()
方法接受
IEnumerable
,这就是您所拥有的。您不会(也不应该)将其转换为
SelectList
(反正是
IEnumerable
)。您可以查看我的答案。第二个参数中的
DropDownList()
DropDownListFor()
方法accept
IEnumerable
,这就是您的答案。您不会(也不应该)将其转换为
SelectList
(反正是
IEnumerable
)。您可以看看我的答案。我相信问题是关于“如何将列表转换为SelectList”,而不是关于“如何创建下拉列表”是的。。我本来想问@user3720460这个问题,但我还没有启用评论,所以我想回答我之前遇到的问题。我相信问题是关于“如何将列表转换为SelectList”,而不是关于“如何创建下拉列表”是的。。我本来想问@user3720460这个问题,但我还没有启用评论,所以我想回答一下我之前遇到的问题