我有用户表,它有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");
哪个不起作用...请帮助
答案 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") %>