ASP> NET MVC объединить две детали в раскрывающемся списке - PullRequest
0 голосов
/ 12 февраля 2019

Если я использую эту сумку вида

ViewBag.employee = (from e in db.Employees
                                    select e.FullName).Distinct();

для использования в этом раскрывающемся списке

  <div class="form-group">
                @Html.LabelFor(model => model.EmployeeID, "EmployeeID", htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownList("EmployeeID", new SelectList(ViewBag.employee), "--Select--")
                    @Html.ValidationMessageFor(model => model.EmployeeID, "", new { @class = "text-danger" })
                </div>
            </div>

Есть ли способ объединить еще одну деталь?

Например EmployeesID, чтобы при использовании раскрывающегося списка идентификатор EmployeeID отображался рядом с их именем?Мне нужна эта функция, поскольку некоторые сотрудники могут иметь одинаковые имена.

1 Ответ

0 голосов
/ 12 февраля 2019

Один из способов получить то, что вы просили, - это использовать

select e.FullName + " (" + e.ID + ")"

для объединения значений вместе в источнике в запросе.

И удалить Distinct(), так какненужным.

PS В более широком смысле, ваш раскрывающийся список действительно должен использовать идентификатор для идентификации выбранного элемента в любом случае.Таким образом, вашему списку SelectList должен быть передан список SelectListItem (они могут содержать как идентификатор, так и отображаемое значение) вместо простого списка строк.Таким образом, когда форма отправляется обратно на сервер, вы можете быть уверены, какой именно сотрудник был выбран.Вы хотите, чтобы Razor отображал такие параметры, как <option id="2">Joe Bloggs (2)</option>, чтобы «2» было значением, отправленным обратно на сервер.Отображаемое значение предназначено только для пользователя и не очень полезно при отправке данных обратно.Если вы выполните поиск, вы вскоре найдете примеры создания и использования SelectListItems.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...