web-dev-qa-db-fra.com

Ajouter une classe CSS à sélectionner en utilisant @ Html.DropDownList ()

Je construis ma première application MVC après des années d'utilisation de formulaires Web et, pour une raison quelconque, je ne suis pas en mesure de faire en sorte que cela fonctionne:

@Html.DropDownList("PriorityID", String.Empty, new {@class="textbox"} )

Message d'erreur:

System.Web.Mvc.HtmlHelper<SPDR.Models.Bug> 'Ne contient pas de définition pour DropDownList et la meilleure méthode de surcharge d'extension System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper, string, System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>, object) contient des arguments non valides

Toute aide grandement appréciée!

67
Lee Bailey

En regardant le contrôleur et en apprenant un peu plus sur le fonctionnement réel de MVC, j'ai été en mesure de donner un sens à cela.

Mon point de vue était l'un de ceux générés automatiquement et contenait cette ligne de code:

@Html.DropDownList("PriorityID", string.Empty)

Pour ajouter des attributs HTML, je devais faire quelque chose comme ceci:

@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class="dropdown" })

Merci encore à @Laurent pour votre aide, je réalise que la question n'était pas aussi claire qu'elle aurait pu l'être ...

UPDATE:

Une meilleure façon de le faire serait d'utiliser DropDownListFor lorsque cela est possible, de cette manière, vous ne comptez pas sur une chaîne magique pour l'attribut name

@Html.DropDownListFor(x => x.PriorityID, (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class = "dropdown" })
97
Lee Bailey

Comme l'indique la signature du message d'erreur, le deuxième argument doit être un IEnumerable, plus spécifiquement un IEnumerable de SelectListItem. C'est la liste des choix. Vous pouvez utiliser le type SelectList, qui est un IEnumerable de SelectListItem. Pour une liste sans choix:

@Html.DropDownList("PriorityID", new List<SelectListItem>(), new {@class="textbox"} )

Pour une liste avec quelques choix:

@Html.DropDownList(
    "PriorityID", 
    new List<SelectListItem> 
    { 
        new SelectListItem { Text = "High", Value = 1 }, 
        new SelectListItem { Text = "Low",  Value = 0 },
    }, 
    new {@class="textbox"})

Peut-être que ce tutoriel peut être utile: Comment créer un DropDownList avec ASP.NET MVC

36

Si vous ajoutez plus que l’argument ya dropdownlist dans Asp.Net MVC. Lorsque vous modifiez un enregistrement ou transmettez une valeur dans le sac de visualisation.

Utilisez ceci ce sera un travail: -

@Html.DropDownList("CurrencyID",null,String.Empty, new { @class = "form-control-mandatory" })
18
mohita

Vous pouvez le faire en utilisant jQuery

  $("select").addClass("form-control")

ici, Sélectionner la balise is- html, Nom de la classe de contrôle de forme

 @Html.DropDownList("SupplierId", "Select Supplier")

et ici, SupplierId est ViewBagList, Select Supplier is - Nom complet

6
Praveen M P

Il y a quelques options dans les constructeurs, si vous n'avez pas dropdownList et que vous voulez insérer une classe CSS, vous pouvez l'utiliser comme

@Html.DropDownList("Country", null, "Choose-Category", new {@class="form-control"})

dans ce cas, Pays est le nom de votre liste déroulante, null signifie que vous ne passez aucune liste générique de votre contrôleur. "Choisissez-Catégorie" est l'élément sélectionné et le dernier dans la classe CSS si vous ne souhaitez pas sélectionner d'option par défaut, simple remplacez "Choose-Category" par ""

5
mk Mughal

Essayez simplement ceci

@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID,  new { @class="dropdown" })

Mais si vous voulez une valeur par défaut ou aucune valeur d'option, vous devez essayer celle-ci, car String.Empty ne sélectionnera aucune valeur pour vous qui fonctionnera comme un -select- comme option par défaut

@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, String.Empty, new { @class="dropdown" })
4
gdmanandamohon

Essaye ça:

@Html.DropDownList(
    "country", 
    new[] {
        new SelectListItem() { Value = "IN", Text = "India" },
        new SelectListItem() { Value = "US", Text = "United States" }
    }, 
    "Country",
    new { @class = "form-control",@selected = Model.Country}
)
1
Abhishek Maurya

Essayez ci-dessous le code:

@Html.DropDownList("ProductTypeID",null,"",new { @class = "form-control"})
0
Alfred Jose