2010-01-27 86 views
2

我有用戶表上,它的ID,姓名姓幫助與asp.net的MVC SelecList,Html.dropdownList和linqtosql

我有一個LINQ to SQL的類

我想有ID的下拉列表爲價值和具有名稱和姓氏文本....我怎麼能這樣做?

ViewData["User_Id"] = new SelectList(UsersRepository.GetAll(), "Id", "Name"); 

工作得很好,但我想

ViewData["User_Id"] = new SelectList(UsersRepository.GetAll(), "Id", "Name "+" Last_Name"); 

這不工作...幫助,請

回答

1

嘗試使用一些很好的舊LINQ。

var data = from u in UsersRepository.GetAll() 
      select new { 
       Id : u.Id, 
       Name : string.Concat(u.Name, u.LastName) 
      }; 
ViewData["User_Id"] = new SelectList(data, "Id", "Name"); 
1

此控件使用反射爲dataText和dataValue查找正確的屬性。您將無法一起添加屬性。

雖然您可以創建一個匿名類型。

假設從數據庫中收集看起來像以下:

var testModelCollection = new List<TestModel>() { 
     new TestModel() { Id = 1, Name = "Bob", LastName = "Smith" }, 
     new TestModel() { Id = 2, Name = "Jack", LastName = "Thompson" } 
    }; 

    var changedModelCollection = from t in testModelCollection 
           select new { 
            Id = t.Id, 
            FullName = t.Name + " " + t.LastName 
           }; 


    ViewData["User_Id"] = new SelectList(changedModelCollection, "Id", "FullName"); 

您的視圖中的DropDownList的定義將是這個樣子:

<%= Html.DropDownList("Username", (SelectList)ViewData["User_Id"], "Select a User") %>