Добавление класса 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) имеет некоторые недопустимые аргументы

Любая помощь очень ценится!

Ответ 1

Посмотрев на контроллер и немного узнав о том, как работает 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" })

Ответ 2

Как следует из сигнатуры сообщения об ошибке, второй аргумент должен быть 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

Ответ 3

Если вы добавили в список Asp.Net MVC больше, чем аргумент ya. Когда вы редактируете запись или передаете значение в сумке вида.

Используйте это, это будет работа: -

@Html.DropDownList("CurrencyID",null,String.Empty, new { @class = "form-control-mandatory" })

Ответ 4

Вы можете сделать это с помощью jQuery

  $("select").addClass("form-control")

здесь, выберите тег is- html,    Имя класса управления формами

 @Html.DropDownList("SupplierId", "Select Supplier")

и здесь, SupplierId - ViewBagList,        Выберите поставщика - Отображаемое имя

Ответ 5

Просто попробуйте это

@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" })

Ответ 6

Попробуйте следующее:

@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}
)

Ответ 7

В конструкторе есть несколько вариантов если у вас нет dropdownLis, и вы хотите вставить класс html, который вы можете использовать, например

@Html.DropDownList("Country", null, "Choose-Category", new {@class="form-control"})

в этом случае Country - это имя вашего раскрывающегося списка, null - это то, что вы не передаете какой-либо общий список из вашего контроллера. "Выбрать-категорию" - это выбранный элемент и последний в классе html если вы не хотите выбирать любой вариант по умолчанию, поэтому просто замените "Выбрать-категорию" на ""

Ответ 8

Попробуйте ввести код:

@Html.DropDownList("ProductTypeID",null,"",new { @class = "form-control"})

Ответ 9

Попробуйте это

 @Html.DropDownList("Id", null, new { @class = "ct-js-select ct-select-lg" })

Ответ 10

Вы можете просто сделать это:

@Html.DropDownList("PriorityID", null, new { @class="form-control"})