Cómo escribir un simple Html.DropDownListFor ()?

En ASP.NET MVC 2, me gustaría escribir una lista desplegable muy simple que proporcione opciones estáticas. Por ejemplo, me gustaría proporcionar opciones entre “Rojo”, “Azul” y “Verde”.

Vea este artículo de MSDN y un ejemplo de uso aquí en Stack Overflow .

Digamos que tiene la siguiente clase Linq / POCO:

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

Y digamos que tienes el siguiente modelo:

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

Y, finalmente, digamos que tiene la siguiente lista de colores. Podrían provenir de una consulta de Linq, de una lista estática, etc.

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

En su opinión, puede crear una lista desplegable como esta:

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

o puede escribir sin clases, ponga algo como esto directamente en la vista.

Evite la gran cantidad de dedos gordos comenzando con un diccionario en el modelo

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

En la Vista, conviértalo a una lista para visualizar

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

Hola, así es como lo hice en un proyecto:

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

Espero que ayude a alguien. Gracias

O si se trata de un contexto de base de datos que puede usar

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

Con “Seleccione un elemento”

 @Html.DropDownListFor(model => model.ContentManagement_Send_Section, new List { 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" }) 

Derivado de los códigos: Master Programmer && Joel Wahlund ;
Rey de referencia: https://stackoverflow.com/a/1528193/1395101 JaredPar ;

Gracias Master Programmer && Joel Wahlund && JaredPar ;

Buena suerte amigos.