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

Luc*_*oli 18 asp.net-mvc 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);
        }
Run Code Online (Sandbox Code Playgroud)

但VS返回错误,因为没有名为"姓氏名称"的属性.如何在选择列表标签中连接姓名和姓氏?

谢谢

cod*_*123 49

你可以这样做:

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);
Run Code Online (Sandbox Code Playgroud)

  • 该技术还允许组合来自不同链接对象的属性。例如`FullName = s.Parent.Surname + s.Name` (2认同)

Dar*_*rov 29

添加一个新属性time.Anagrafica_Dipendente,它将代表两个属性的串联:

public string Fullname 
{
    get 
    {
        return string.Format("{0} {1}", Surname, Name);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用这个:

ViewData["accountlist"] = new SelectList(
    time.Anagrafica_Dipendente.ToList(), 
    "ID_Dipendente", 
    "Fullname", 
    null
); 
Run Code Online (Sandbox Code Playgroud)

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

public string Fullname => string.Format("{0} {1}", Surname, Name);
Run Code Online (Sandbox Code Playgroud)

在此处了解有关表达身体属性的更多信息.


小智 5

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

[NotMapped]
public string FullName
   {
     get
       {
         return Name + " " + LastName;
       }
   }
Run Code Online (Sandbox Code Playgroud)

然后你可以在控制器中使用正常的方式,这是我的代码,所有者相关的外键AspNetUsers

ViewBag.Owner = new SelectList(db.AspNetUsers, "Id", "FullName", product.Owner);
Run Code Online (Sandbox Code Playgroud)