@HTML.DropDownList width
Q: Comment définir width pour @Html.DropDownList (et pas dans css)?
@Html.DropDownList("ListId", String.Empty, new {style="width: 250px;"}) @* no go!*@
4 réponses
le second argument du DropDownList helper doit être un IEnumerable<SelectListItem>
. Vous passez une chaîne vide pour être plus précis). Ainsi, pour utiliser cet helper, vous devrez respecter sa signature:
@Html.DropDownList(
"ListId",
Enumerable.Empty<SelectListItem>(),
new { style = "width: 250px;" }
)
de toute évidence, générer une liste déroulante vide ne sert à rien. Vous avez probablement un modèle de vue (vous devriez d'ailleurs) que vous souhaitez utiliser pour se lier à:
@Html.DropDownList(
"ListId",
Model.MyList,
new { style = "width: 250px;" }
)
et bien sûr, parce que vous avez un modèle de vue, vous devriez préférer utilisez le DropDownListFor
helper:
@Html.DropDownListFor(
x => x.ListId,
Model.MyList,
new { style = "width: 250px;" }
)
et enfin pour éviter d'encombrer votre HTML avec des styles, vous devriez utiliser un CSS externe:
@Html.DropDownListFor(
x => x.ListId,
Model.MyList,
new { @class = "mycombo" }
)
où dans votre CSS externe vous définiriez le .mycombo
la règle:
.mycombo {
width: 250px;
}
Maintenant vous avez ce que je considère comme un code approprié.
Vous devriez utiliser L'approche du modèle View. Cependant, la sortie paresseuse est juste pour donner au 2ème paramètre Un null.
@Html.DropDownList("ListId", null, new {style="width: 250px;"})
@Html.DropDownListFor(model => model.Test,
new SelectList(new List<YourNamespace.Modelname>(), "Id", "Name"),
null, new { @id = "ddlTest", @style="width: 250px;" })
il y a une technique jquery qui vous permet de définir la largeur sans avoir à traiter avec le @Html.DropDownList constructor.
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#ListId").width(300);
});
</script>