Come scrivere un semplice Html.DropDownListFor ()?

In ASP.NET MVC 2, mi piacerebbe scrivere un elenco a discesa molto semplice che offre opzioni statiche. Ad esempio, mi piacerebbe fornire delle scelte tra “Rosso”, “Blu” e “Verde”.

Vedi questo articolo MSDN e un esempio di utilizzo qui su Stack Overflow .

Diciamo che hai la seguente class Linq / POCO:

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

E diciamo che hai il seguente modello:

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

E, infine, diciamo che hai il seguente elenco di colors. Potrebbero provenire da una query Linq, da una lista statica, ecc .:

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

Dal tuo punto di vista, puoi creare un elenco a discesa in questo modo:

 <%= 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 ) ) %> 

oppure non puoi scrivere classi, mettere qualcosa di simile direttamente alla vista.

Evita di troppe diteggiature grosse iniziando con un dizionario nel modello

 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"} }; } } 

Nella vista convertirlo in un elenco per la visualizzazione

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

Ciao, ecco come l’ho fatto in un unico progetto:

  @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"}) 

Spero che aiuti Qualcuno. Grazie

O se è da un contesto di database che è ansible utilizzare

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

Con “Seleziona un articolo”

 @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" }) 

Derivato dai codici: Master Programmer && Joel Wahlund ;
Re Riferimento: https://stackoverflow.com/a/1528193/1395101 JaredPar ;

Grazie Master Programmer && Joel Wahlund && JaredPar ;

Buona fortuna amici.