Как установить различные предварительно настроенные значения по умолчанию для DropDownList в View с использованием ASP.NET MVC? - PullRequest
0 голосов
/ 09 июля 2019

Я создал программу, которая имеет возможность настроить 2 ключа для друг друга, например:

Key 1 = key a,
key 2 = key b,
key 3 = key c,
etc

Со следующей страницей конфигурации:

enter image description here

При нажатии кнопки отправки он отправит конфигурацию в базу данных:

enter image description here

Это работает нормально, но теперь яя пытаюсь создать страницу редактирования для конфигурации.На этой странице конфигурации я использую запрос, который получает конфигурацию из базы данных и помещает ее в WebGrid:

enter image description here

Запрос:

var v = (from a in dbProducts.MapperConfigs
                 where
                    a.MappingID.Equals(id)
                 select a
                   );

Это получит всю конфигурацию, в левой части WebGrid я просто поместил ключи: key1, key2, key3, key4 и т. Д. Но с правой стороны я хочу, чтобы у пользователя был выбор, которыйключ для подключения к key1, key2, key3 и т. д. Поэтому я использую раскрывающийся список, однако этот раскрывающийся список заполняется элементом SelectListItem со следующим кодом:

Контроллер:

 foreach (var item in v)
 {
      list.Add(item.OtherKey, item.OtherKeyType);
 }

 ViewBag.OtherKeysList = new SelectList(list, "OtherKey");

WebGrid вПредставление:

 grid.Column(columnName: "OtherKey", header: "OtherKey", format: @<text>@Html.DropDownList("OtherKey", (IEnumerable<SelectListItem>)ViewBag.OtherKeysList, new { @class = "extra-class" })</text>)))

Это приведет к тому, что все ключи, keyA, KeyB, KeyC будут помещены в DropDownList, но не так, как настроено.Я пытаюсь получить значения по умолчанию в моем выпадающем списке, как было настроено ранее.

У кого-нибудь есть предложения, как этого добиться?

Заранее спасибо

1 Ответ

0 голосов
/ 09 июля 2019

Ваша линия

    ViewBag.OtherKeysList = new SelectList(list, "OtherKey");

Не работает, поскольку вторым параметром конструктора Selectlist является значение по умолчанию.

Поскольку вы используете словарь (переменная list ) для источника, вы должны использовать фактический элемент в словаре как SelectedValue .

Это будет работать:

    ViewBag.OtherKeysList = new SelectList(list, list.Single(i => i.Key == "KeyB"));

Где «KeyB» в данном случае - это ключ, который был выбран и сохранен в базе данных.

...