2012-08-22 2 views
6

Je souhaite générer une liste déroulante pour certains attributs de ma classe de modèle. Je travaille sur une application mvc .net et j'utilise le moteur rasoir pour les vues. Voici ma classe:liste déroulante asp mvc

public class present 
{  
    public DateTime jour { get; set; } 
    public int entree_mat_h { get; set; } 
    public int entree_mid_h { get; set; } 
    public int sortie_mat_h { get; set; } 
    public int sortie_mid_h { get; set; } 
    public int entree_mat_m { get; set; } 
    public int entree_mid_m { get; set; } 
    public int sortie_mat_m { get; set; } 
    public int sortie_mid_m { get; set; } 
    public string mac { get; set; } 
    public string ip { get; set; } 
} 

Par exemple, je veux montrer une liste déroulante avec des valeurs de 0 à 60 pour chaque attribut est un entier. Est-ce que @ html.dropdownlistfor() fonctionne dans ce cas?

+1

utilisation '@ Html.DropDownList()' – Doomsknight

+1

comment l'utiliser dans mon cas? –

+0

Si vous créez une liste avec des variables 'value' et' text' dans In controller, vous pouvez l'utiliser. Ou vous pouvez utiliser '@ html.dropdownlist()' –

Répondre

8

Selon vous déclarer la liste des valeurs possibles, dans votre ici de 0 à 60

@{ var values = new SelectList(Enumerable.Range(0, 60)); } 

Ensuite, vous pouvez l'utiliser dans DropDownListFor aide

@Html.DropDownListFor(m => m.entree_mat_h, values) 
@Html.DropDownListFor(m => m.entree_mid_h, values) 
.... 
+0

C'est une façon beaucoup plus simple alors comment je l'avais fait. –

0

Oui, mais vous devez lui transmettre une liste de sélection personnalisée avec les valeurs souhaitées.

Alors vous feriez quelque chose comme ceci:

var list = new List<SelectListItem>(); 

    for(int i=1; i < 61; i++) 
    { 
     list.Add(new SelectListItem{Text = i, Value = i}); 
    } 

    var sl = new SelectList(items, "Value", "Text"); 

Ensuite, vous devrez passer que le modèle

Puis dans la vue que vous procédez comme suit:

@Html.DropDownListFor(x => x.Quantity, @Model.Quantity) 

Ou quelque chose de ce genre.

De toute évidence, j'ai utilisé de faux noms, donc vous devez l'adapter à votre propre modèle.

+0

J'aime version Kroliks beaucoup plus que le mien, beaucoup plus propre. –

0

Utilisez cette méthode d'extension pour la construction de votre liste déroulante à partir de la source (sélectionnez toutes les valeurs projetées sur la clé et la valeur). exemple

public static IEnumerable<SelectListItem> ToDropDown<TSource>(this IEnumerable<TSource> source, Func<TSource, string> keySelector, Func<TSource, string> elementSelector, Func<TSource,bool> selected) 
     { 
      if (source == null) 
      { 
       return new List<SelectListItem>(); 
      } 
      return source.Select(c => new SelectListItem { Value = keySelector(c), Text = elementSelector(c), Selected = selected(c) }).ToList(); 
     } 

remplir votre ViewBag

ViewBag.Languages = languageRepository().GetAll().ToList().ToDropDown(c => c.ID, c => c.Description, c => c.ID == "EN"); 

et enfin de rasoir

@Html.DropDownList("ddLanguages", (IEnumerable<SelectListItem>)ViewData.Languages, "Please Select") 
Questions connexes