@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!*@
22
demandé sur JaJ 2011-09-30 23:45:40

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é.

69
répondu Darin Dimitrov 2011-09-30 19:55:39

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;"})
4
répondu Tyriddik 2015-04-21 20:49:16
 @Html.DropDownListFor(model => model.Test,
 new SelectList(new List<YourNamespace.Modelname>(), "Id", "Name"), 
 null, new { @id = "ddlTest", @style="width: 250px;" })
1
répondu Thulasiram 2012-07-24 09:48:35

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>
1
répondu Tarzan 2013-07-27 17:35:18