如何编写一个简单的Html.DropDownListFor()?

在ASP.NET MVC 2中,我想编写一个非常简单的下拉列表,给出静态选项。 例如,我想提供“红色”,“蓝色”和“绿色”之间的select。

请参阅此MSDN文章以及Stack Overflow的示例用法 。

假设您有以下Linq / POCO类:

public class Color { public int ColorId { get; set; } public string Name { get; set; } } 

假设您有以下模型:

 public class PageModel { public int MyColorId { get; set; } } 

最后,让我们说,你有以下的颜色列表。 他们可能来自Linq查询,来自静态列表等。

 public static IEnumerable<Color> Colors = new List<Color> { new Color { ColorId = 1, Name = "Red" }, new Color { ColorId = 2, Name = "Blue" } }; 

在你看来,你可以创build一个下拉列表,如下所示:

 <%= Html.DropDownListFor(n => n.MyColorId, new SelectList(Colors, "ColorId", "Name")) %> 
 <%: Html.DropDownListFor( model => model.Color, new SelectList( new List<Object>{ new { value = 0 , text = "Red" }, new { value = 1 , text = "Blue" }, new { value = 2 , text = "Green"} }, "value", "text", Model.Color ) ) %> 

或者你可以写任何类,把这样的东西直接到视图。

从模型中的字典开始避免大量的胖指法

 namespace EzPL8.Models { public class MyEggs { public Dictionary<int, string> Egg { get; set; } public MyEggs() { Egg = new Dictionary<int, string>() { { 0, "No Preference"}, { 1, "I hate eggs"}, { 2, "Over Easy"}, { 3, "Sunny Side Up"}, { 4, "Scrambled"}, { 5, "Hard Boiled"}, { 6, "Eggs Benedict"} }; } } 

在视图中,将其转换为列表进行显示

 @Html.DropDownListFor(m => m.Egg.Keys, new SelectList( Model.Egg, "Key", "Value")) 

嗨,这是我在一个项目中是如何做到的:

  @Html.DropDownListFor(model => model.MyOption, new List<SelectListItem> { new SelectListItem { Value = "0" , Text = "Option A" }, new SelectListItem { Value = "1" , Text = "Option B" }, new SelectListItem { Value = "2" , Text = "Option C" } }, new { @class="myselect"}) 

我希望它有助于某人。 谢谢

或者,如果它来自数据库上下文,则可以使用

 @Html.DropDownListFor(model => model.MyOption, db.MyOptions.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() })) 

用“请select一个项目”

 @Html.DropDownListFor(model => model.ContentManagement_Send_Section, new List<SelectListItem> { new SelectListItem { Value = "0", Text = "Plese Select one Item" } } .Concat(db.NameOfPaperSections.Select(x => new SelectListItem { Text = x.NameOfPaperSection, Value = x.PaperSectionID.ToString() })), new { @class = "myselect" }) 

源自代码: Master Programmer && Joel Wahlund ;
King参考: https: //stackoverflow.com/a/1528193/1395101 JaredPar ;

感谢程序员 && Joel WahlundJaredPar ;

祝你好运的朋友。