2010-01-27 83 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") %>