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