Как я могу установить выбранное значение Html.DropDownListFor? Я искал в Интернете и увидел, что этого можно достичь, используя четвертый параметр, как показано ниже:
@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country")
Мой список выбора будет отображаться следующим образом:
<select id="ShipFromCountries" name="ShipFromCountries">
<option value="">Please select a country</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
...
</select>
Но по какой-то причине Великобритания остается выбранной, но я хочу, чтобы было выбрано «Пожалуйста, выберите страну».
Кто-нибудь знает, как я могу этого добиться?
РЕДАКТИРОВАТЬ
Я обновил свой код, так как функциональные возможности немного изменились, но, похоже, проблема все еще возникает. На мой взгляд, вот что:
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
1
- это идентификатор того, option
что я хочу выбрать, я также пробовал использовать текст, option
но это тоже не работает.
Любые идеи?
источник
OrderTemplates
своей попытке привязки кViewBag
свойству typeofIEnumerabe<SelectListItem>
. Но<select>
элемент не может быть привязан к коллекции сложных объектов (только тип значения)Для меня не работал, поэтому работал так:
Контроллер:
Посмотреть:
JQuery:
источник
Когда вы передаете такой объект:
вы говорите: Источник (
Model
) и Ключ ("Code"
) Текст ("Name"
) и выбранное значение0
. Вероятно, у вас нет0
значения в источнике дляCode
свойства, поэтому помощник HTML выберет первый элемент, чтобы передать этому элементу управления реальное selectedValue.источник
Перед назначением убедитесь, что вы обрезали выбранное значение.
//Модель
// Контроллер
//Посмотреть
источник
Если вы знаете, что будет в представлении, вы также можете установить значение по умолчанию из контроллера, а не устанавливать его в файл view / cshtml. Нет необходимости устанавливать значение по умолчанию со стороны HTML.
В файле контроллера.
В файле .cshtml.
источник
Вы должны забыть о классе
Используйте это в своем контроллере:
Выберите значение:
Добавьте список в ViewData:
Используйте это в своем представлении:
-
Дополнительная информация: http://www.asp.net/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc
источник
Добавить секцию контроллера
Добавить раздел Html
Простой метод
источник
Для меня общее решение :)
источник
Linq to Dropdown с пустым элементом, выбранным элементом (работает на 100%)
(строго типизирован, вероятность ошибки минимальна) Любые изменения модели будут отражены в привязке
Контроллер
Посмотреть
Этот метод привязки данных также возможен
источник
Я знаю, что это не совсем ответ на вопрос, но я искал способ инициализировать DropDownList из списка на лету в представлении, когда я все время натыкался на этот пост.
Моя ошибка заключалась в том, что я пытался создать SelectList из словаря следующим образом:
Затем я покопался в официальном документе msdn и обнаружил, что
DropDownListFor
это не обязательно требуетSelectList
, а скорееIEnumerable<SelectListItem>
:В моем случае я, вероятно, также могу опустить
Model.Locality
выбранный элемент, так как это а) единственный элемент и б) он уже говорит об этом вSelectListItem.Selected
свойстве.На всякий случай, если вам интересно, источником данных является страница AJAX, которая динамически загружается с помощью элемента управления SelectWoo / Select2.
источник
Вам нужно получить один и установить другой. Выбранное значение не может быть тем же элементом, который вы собираетесь установить.
Я использую словарь Enum для своего списка, поэтому есть пара «ключ», «значение».
источник
У меня была аналогичная проблема, я использовал имя ViewBag и Element одинаково. (Опечатка)
источник
Это проблемы с CSS. Я не знаю, почему @ Html.DropDownListFor в Bootstrap 4 действительно работает. Конечно, это проблема дизайна классов. В любом случае, если в вашем поле ввода Dropdown есть CSS Padding: #px, # px; затем отключите его. Надеюсь, это сработает.
источник