Как объединить два поля в текстовом описании SelectList?
Я хочу, чтобы в выбранном списке было указано имя и фамилия людей модели EF.
Я пробовал с этим:
public ActionResult Insert()
{
ViewData["accountlist"] = new SelectList(time.Anagrafica_Dipendente.ToList(), "ID_Dipendente", "Surname Name", null);
Giustificativi g = new Giustificativi();
return View(g);
}
но VS возвращает ошибку, потому что нет атрибута, называемого "фамилия".
как я могу конкатрировать имя и фамилию в ярлыке selectlist?
спасибо
Ответы
Ответ 1
вы можете сделать что-то вроде этого:
ViewData["accountlist"] =
new SelectList((from s in time.Anagrafica_Dipendente.ToList() select new {
ID_Dipendente=s.ID_Dipendente,
FullName = s.Surname + " " + s.Name}),
"ID_Dipendente",
"FullName",
null);
Ответ 2
Добавьте новое свойство в time.Anagrafica_Dipendente
, которое будет представлять собой конкатенацию двух свойств:
public string Fullname
{
get
{
return string.Format("{0} {1}", Surname, Name);
}
}
а затем используйте это:
ViewData["accountlist"] = new SelectList(
time.Anagrafica_Dipendente.ToList(),
"ID_Dipendente",
"Fullname",
null
);
Обновление: Начиная с С# 6.0, свойство можно более кратко записать как:
public string Fullname => string.Format("{0} {1}", Surname, Name);
Подробнее о свойствах с выражением здесь.
Ответ 3
Я искал этот ответ, и мой простой способ - добавить атрибут NotMapped, это мой код:
[NotMapped]
public string FullName
{
get
{
return Name + " " + LastName;
}
}
Тогда вы можете использовать обычный способ в контроллере, это мой код, владелец внешнего ключа, связанного с AspNetUsers
ViewBag.Owner = new SelectList(db.AspNetUsers, "Id", "FullName", product.Owner);