Dans ASP.NET MVC 2, j'aimerais écrire une liste déroulante très simple qui donne des options statiques. Par exemple, j'aimerais proposer des choix entre "Rouge", "Bleu" et "Vert".
Voir cet article MSDN et un exemple d'utilisation ici sur Stack Overflow .
Disons que vous avez la classe Linq/POCO suivante:
public class Color
{
public int ColorId { get; set; }
public string Name { get; set; }
}
Et disons que vous avez le modèle suivant:
public class PageModel
{
public int MyColorId { get; set; }
}
Et enfin, disons que vous avez la liste de couleurs suivante. Ils pourraient provenir d’une requête Linq, d’une liste statique, etc .:
public static IEnumerable<Color> Colors = new List<Color> {
new Color {
ColorId = 1,
Name = "Red"
},
new Color {
ColorId = 2,
Name = "Blue"
}
};
Dans votre vue, vous pouvez créer une liste déroulante comme ceci:
<%= 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
)
)
%>
ou vous ne pouvez écrire aucune classe, mettez quelque chose comme ceci directement dans la vue.
Evitez beaucoup de gros doigtés en commençant par un dictionnaire dans le modèle
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"}
};
}
}
Dans la vue, convertissez-le en liste pour affichage.
@Html.DropDownListFor(m => m.Egg.Keys,
new SelectList(
Model.Egg,
"Key",
"Value"))
Bonjour, voici comment je l'ai fait dans un projet:
@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"})
J'espère que ça aide quelqu'un. Merci
Ou si c'est à partir d'un contexte de base de données, vous pouvez utiliser
@Html.DropDownListFor(model => model.MyOption, db.MyOptions.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }))
Avec "Veuillez sélectionner un élément"
@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" })
Dérivé des codes: Programmeur principal && Joel Wahlund ;
King Référence: https://stackoverflow.com/a/1528193/1395101 JaredPar ;
Merci Programmeur principal && Joel Wahlund && JaredPar ;
amis de bonne chance.
@using (Html.BeginForm()) {
<p>Do you like pizza?
@Html.DropDownListFor(x => x.likesPizza, new[] {
new SelectListItem() {Text = "Yes", Value = bool.TrueString},
new SelectListItem() {Text = "No", Value = bool.FalseString}
}, "Choose an option")
</p>
<input type = "submit" value = "Submit my answer" />
}
Je pense que cette réponse est similaire à celle de Berat, en ce sens que vous avez mis tout le code de votre liste déroulante directement dans la vue. Mais je pense que c'est un moyen efficace de créer une liste déroulante y/n (booléen), donc je voulais la partager.
Quelques notes pour les débutants:
J'espère que ça aide quelqu'un,