2013-03-04 64 views
-2

是否可以合併實體的下拉列表值。下拉列表合計值

說我有一個我試圖做這個姓氏和名字

人等級:

ViewBag.uservalues = new SelectList(db.Persons, "ID", "FirstName" + " " + "LastName"); 

但這吐出一個錯誤。

+3

什麼是錯誤? – 2013-03-04 23:19:40

回答

0
var query = from c in db.Persons 
      select new { id = c.ID,Names = c.FirstName + " " + c.LastName }; 

ViewBag.personid = new SelectList(query, "ID", "Names"); 
+0

視圖代碼是什麼樣的? – 2013-03-04 23:32:24

+0

'

@Html.DropDownList("personid",String.Empty) @Html.ValidationMessageFor(model => model.PersonID)
' – mpora 2013-03-04 23:34:11

+0

所以你有兩個不同地方的數據,你的ViewModel和ViewBag?我必須考慮這一點。它看起來不太乾淨。然後再次,它不需要任何魔術字符串,所以。 – 2013-03-04 23:36:16

2

你調用SelectList構造

new SelectList(db.Persons,"ID", "FirstName"+" " + "LastName"); 

使用this overload,這需要公共字段或屬性的名稱在ViewModel結合,你可能在沒有字段或屬性的名爲「FirstName LastName」的ViewModel。

爲您的ViewModel類添加一個屬性,將兩個字段連接起來(稱爲FirstAndLastName),然後在您的SelectList調用中按名稱指定該屬性。

new SelectList(db.Persons,"ID", "FirstAndLastName"); 
0

由於實體框架創建部分類,你應該讓另一部分類具有您要使用的衍生屬性相同的命名空間。

如果實體fraemwork創建的類:

public partial class Person 
{ 
    public String FirstName {get;set;} 
    public String LastName{get;set;} 
    public Int32 ID{get;set;} 
} 

創建一個新的部分類

public partial class Person 
{ 
    public String FullName {get{ return this.FirstName + " " + this.LastName}} 
} 

,並在您的項目在一些地方保存在另一個文件夾(但具有相同的命名空間)