帮助asp.net mvc SelecList,Html.dropdownList和linqtosql

时间:2010-01-27 05:35:33

标签: asp.net-mvc drop-down-menu

我有用户表,它有id,姓名

我有一个linq to sql class

我想要一个ID为id的下拉列表,并为文本设置NAME AND LASTNAME ....我该怎么做?

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

工作正常,但我想要

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

哪个不起作用...请帮助

2 个答案:

答案 0 :(得分: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 :(得分: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") %>