J'utilise le code ci-dessous pour créer un menu déroulant
Manette
ViewBag.Id= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name")
Vue
@Html.DropDownList("Id", null, htmlAttributes: new { @class = "form-control" })
Ma question est la suivante: comment puis-je modifier SelectList
pour ajouter un élément vierge afin qu’un élément vide soit automatiquement ajouté pour DropDownList
.
Merci.
Utilisez l’une des surcharges qui accepte une optionLabel
@Html.DropDownListFor(m => m.ID, (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" })
ou si vous ne voulez pas utiliser les méthodes fortement typées
@Html.DropDownList("ID", (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" })
Qui ajoutera la première option avec le texte spécifié dans le 3ème paramètre et avec une valeur null
<option value="">Please Select</option>
Vous pouvez utiliser cette surcharge:
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, string optionLabel, object htmlAttributes);
où optionLabel
est le texte d'un élément vide par défaut.
Dans mon projet, ces travaux:
Manette
ViewBag.TagHfoFlagId= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name")
Vue
@Html.DropDownList("TagHfoFlagId", null,"--Select Name--", htmlAttributes: new { @id = "tags" })
La réponse acceptée fonctionne, mais elle affiche la valeur par défaut (null) dans la liste déroulante de la vue, même si vous en avez déjà sélectionné une auparavant. Si vous souhaitez que la valeur déjà sélectionnée soit affichée dans la liste déroulante une fois que vous avez rendu la vue, utilisez plutôt ceci:
Manette
ViewBag.Fk_Id_Parent_Table = new SelectList(db.Parent_Table, "Id", "Name", Child_Table.Fk_Id_Parent_Table);
return View(ChildTable);
Vue
@Html.DropDownList(
"Fk_Id_Parent_Table",
null,
"Not Assigned",
htmlAttributes: new { @class = "form-control" }
)