Добавление класса css для выбора с помощью @Html.DropDownList()
Я строю свое первое приложение MVC после многих лет работы с веб-формами, и по какой-то причине я не могу сделать эту работу:
@Html.DropDownList("PriorityID", String.Empty, new {@class="textbox"} )
Сообщение об ошибке:
System.Web.Mvc.HtmlHelper<SPDR.Models.Bug>
не содержит определения DropDownList
и лучший метод расширения перегрузки System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper, string, System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>, object)
имеет несколько неверных аргументов
Любая помощь с благодарностью!
10 ответов
Взглянув на контроллер и узнав немного больше о том, как на самом деле работает MVC, я смог понять это.
Мой взгляд был одним из автоматически сгенерированных и содержал следующую строку кода:
@Html.DropDownList("PriorityID", string.Empty)
Чтобы добавить атрибуты HTML, мне нужно было сделать что-то вроде этого:
@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class="dropdown" })
Еще раз спасибо @Laurent за вашу помощь, я понимаю, что вопрос был не так ясен, как мог бы быть...
ОБНОВИТЬ:
Лучший способ сделать это - использовать DropDownListFor, где это возможно, чтобы вы не полагались на волшебную строку для атрибута name.
@Html.DropDownListFor(x => x.PriorityID, (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class = "dropdown" })
Как следует из подписи в сообщении об ошибке, второй аргумент должен быть IEnumerable, более конкретно, IEnumerable из SelectListItem. Это список вариантов. Вы можете использовать тип SelectList, который является IEnumerable из SelectListItem. Для списка без выбора:
@Html.DropDownList("PriorityID", new List<SelectListItem>(), new {@class="textbox"} )
Для списка с несколькими вариантами:
@Html.DropDownList(
"PriorityID",
new List<SelectListItem>
{
new SelectListItem { Text = "High", Value = 1 },
new SelectListItem { Text = "Low", Value = 0 },
},
new {@class="textbox"})
Может быть, этот учебник может помочь: как создать DropDownList с ASP.NET MVC
Если вы добавили больше, чем аргумент, я выпадаю из Asp.Net MVC. При редактировании записи или передаче значения в поле зрения.
Используйте это, это будет работать:-
@Html.DropDownList("CurrencyID",null,String.Empty, new { @class = "form-control-mandatory" })
В конструкторах есть несколько параметров, если у вас нет dropdownList и вы хотите вставить класс CSS, который вы можете использовать как
@Html.DropDownList("Country", null, "Choose-Category", new {@class="form-control"})
в этом случае Country - это название вашего выпадающего списка, null - для вас не передается какой-либо универсальный список из вашего контроллера. "Choose-Category" - это выбранный элемент и последний в классе CSS, если вы не хотите выбирать какой-либо вариант по умолчанию, так просто замените "Выберите категорию" на ""
Вы можете сделать это с помощью jQuery
$("select").addClass("form-control")
здесь выберите HTML-тег, Form-control is-имя класса
@Html.DropDownList("SupplierId", "Select Supplier")
и здесь, SupplierId - это ViewBagList, выберите поставщика - отображаемое имя
Просто попробуйте это
@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, new { @class="dropdown" })
Но если вы хотите использовать значение по умолчанию или не указывать значение параметра, вам нужно попробовать это, потому что String.Empty
выберет это не значение для вас, которое будет работать как -select-
по умолчанию
@Html.DropDownList("PriorityID", (IEnumerable<SelectListItem>)ViewBag.PriorityID, String.Empty, new { @class="dropdown" })
Попробуй это:
@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}
)
Попробуйте код ниже:
@Html.DropDownList("ProductTypeID",null,"",new { @class = "form-control"})
Попробуй это
@Html.DropDownList("Id", null, new { @class = "ct-js-select ct-select-lg" })
Вы можете просто сделать это:
@Html.DropDownList("PriorityID", null, new { @class="form-control"})