В: Как установить ширину для @Html.DropDownList(а не в css)?
@Html.DropDownList("ListId", String.Empty, new {style="width: 250px;"}) @* no go!*@
В: Как установить ширину для @Html.DropDownList(а не в css)?
@Html.DropDownList("ListId", String.Empty, new {style="width: 250px;"}) @* no go!*@
Второй аргумент DropDownList должен быть IEnumerable<SelectListItem>
. Вы передаете строку (более точную, точнее, пустую). Поэтому, чтобы использовать этого помощника, вам придется соблюдать его подпись:
@Html.DropDownList(
"ListId",
Enumerable.Empty<SelectListItem>(),
new { style = "width: 250px;" }
)
Очевидно, что создание пустого выпадающего списка малопригодно. Вероятно, у вас есть модель представления (вы должны кстати), которую вы хотите использовать для привязки к:
@Html.DropDownList(
"ListId",
Model.MyList,
new { style = "width: 250px;" }
)
и, конечно, потому что у вас есть модель представления, вам следует использовать помощник DropDownListFor
:
@Html.DropDownListFor(
x => x.ListId,
Model.MyList,
new { style = "width: 250px;" }
)
и, наконец, чтобы избежать загромождения HTML со стилями, вы должны использовать внешний CSS:
@Html.DropDownListFor(
x => x.ListId,
Model.MyList,
new { @class = "mycombo" }
)
где в вашем внешнем CSS вы определяете правило .mycombo
:
.mycombo {
width: 250px;
}
Теперь у вас есть то, что я считаю правильным кодом.
Вы должны использовать подход View Model. Однако ленивый выход - просто дать второму параметру значение 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;" })
Существует метод jquery, который позволяет вам устанавливать ширину без необходимости использования конструктора @Html.DropDownList.
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#ListId").width(300);
});
</script>