2010-05-03 119 views
12

我想放入一個選定的列表標籤EF模型的人的姓名。 我試着這樣:如何將SelectList文本描述中的兩個字段組合在一起?

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標籤中連接名字和姓氏?

感謝

回答

40

你可以做這樣的事情:

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

此技術還允許組合來自不同鏈接對象的屬性。例如'FullName = s.Parent.Surname + s.Name' – Josh 2014-10-19 23:54:06

26

添加一個新的屬性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); 

詳細瞭解表達健全性here

+1

爲了達到這個目的,'Fullname'必須是'time.Anagrafica_Dipendente'的成員。 – 2010-05-03 14:39:50

+0

是的,這是正確的。我應該指定這一點。 – 2010-05-03 14:47:07

+0

我不敢相信我無法想象我的自我,簡單而優雅,喜歡它! – Ben 2012-04-13 08:21:17

相關問題