Asp.net mvc 如何在SelectList文本描述中组合两个字段?

Asp.net mvc 如何在SelectList文本描述中组合两个字段?,asp.net-mvc,selectlist,Asp.net Mvc,Selectlist,我想在一个选定的列表标签的姓名和姓氏的人的EF模式。 我试过这个: public ActionResult Insert() { ViewData["accountlist"] = new SelectList(time.Anagrafica_Dipendente.ToList(), "ID_Dipendente", "Surname Name", null); Giustificativi g = new

我想在一个选定的列表标签的姓名和姓氏的人的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标签中显示姓名


谢谢

您可以这样做:

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);

将新属性添加到
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
); 

更新:从C#6.0开始,属性可以更简洁地写为:

public string Fullname => string.Format("{0} {1}", Surname, Name);

了解有关表达式体属性的更多信息。

我一直在寻找这个答案,我的简单方法是添加一个NotMapped属性,这是我的代码:

[NotMapped]
public string FullName
   {
     get
       {
         return Name + " " + LastName;
       }
   }
然后您可以在控制器中使用正常方式,这是我的代码,所有者是与
AspNetUsers

ViewBag.Owner = new SelectList(db.AspNetUsers, "Id", "FullName", product.Owner);
在望

<select asp-for="AccountId" 
            asp-items='new SelectList(from x in Accounts select new { Value = x.AccountId ,Text = x.Name + " " + x.Surname}, "Value","Text")'></select>


为了实现这一点,
全名
必须是
时代的一员。Anagrafica_Dipendente
。我不敢相信我想不到我自己,简单而优雅,喜欢它!或者更简洁地使用
公共字符串Fullname=>$“{names}{Name}”此技术还允许组合来自不同链接对象的属性。例如
FullName=s.Parent.Name+s.Name