В раскрывающемся списке hpml-помощника Asp.net в столбце отображается значение двух столбцов - PullRequest
0 голосов
/ 10 июля 2019

У меня есть список сотрудников, которые я хочу показать в раскрывающемся списке двумя свойствами.значение равно id, а текст опции - это имя и фамилия персонала.

Плюс я не хочу использовать foreach.

Я хочу что-то подобное, но это не работает

@Html.DropDownListFor(m => m.Staffs, new SelectList(Model.Staffs, "Id", "Stf_FirstName"+"Stf_LastName"), "", new { @class = "form-control " })

Это работает, но отображается только имя

@Html.DropDownListFor(m => m.Staffs, new SelectList(Model.Staffs, "Id", "Stf_FirstName"), "", new { @class = "form-control " })

1 Ответ

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

Используемый вами конструктор SelectList берет имя свойства и использует отражение, чтобы найти именованный элемент.В первом примере вы говорите, что ищите свойство с именем Stf_FirstNameStf_LastName, которое, как я предполагаю, не существует.

Если вы хотите указать полное имя сотрудника, вам нужно указать это как свойство наStaffs object.

Если у вас есть контроль над тем, какой тип списка содержит Staffs, вы можете добавить свойство, подобное этому:

public property string FullName => $"{Stf_FirstName} {Stf_LastName}";

Затем вы можете вызвать SelectListконструктор с FullName в качестве свойства отображения:

@Html.DropDownListFor(m => m.Staffs, new SelectList(Model.Staffs, "Id", "FullName"), "", new { @class = "form-control" })

Если он вам недоступен, вы можете создать SelectList из запроса LINQ, например, в верхней части кода вашей страницы:

@{
    var staffList = Model.Staffs.Select(s => new { Value = s.Id, Text = $"{s.Stf_FirstName} {s.Stf_LastName}" });
    var staffSelect = new SelectList(staffList, "Value", "Text");
}

Затем создайте свои выпадающие списки, используя этот предварительно созданный SelectList:

@Html.DropDownListFor(m => m.Staffs, staffSelect, "", new { @class = "form-control" })

Таким образом, вы создаете список один раз, а не несколько раз.Отражение недешево, так что, наверное, лучше все-таки сделать это один раз.

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