使用来自多个表的数据创建下拉列表

时间:2011-04-05 19:41:41

标签: c# asp.net asp.net-mvc

我想创建供应商的下拉列表。我的数据库中有一个Vendors表,包含VendorID和CompanyID。 Company表包含CompanyID和Name。

我想要一个包含VendorID作为值且公司名称作为文本的项目的下拉列表。但我不知道如何从相关表中获取Name字段以放入下拉列表,因此我将VendorID作为值和文本。这就是我现在所拥有的。

我正在传递包含此内容的模型:

public IEnumerable<Vendor> Vendors { get; set; }

在我的控制器中,我正在设置像这样的供应商的价值:

MyDBEntities _entities = new MyDBEntities();
Vendors = _entities.Vendors;

这是我在页面上的下拉列表:

<%= Html.DropDownListFor(m => m.VendorId, new SelectList(Model.Vendors, "VendorID", "VendorID"), "- Select a Vendor -")%>

我以为我可以创建一个自定义函数 - GetVendorsForDropdown - 它只返回我需要的数据,并将我的模型更改为包含IEnumerable<Something>。但我不知道返回类型应该是什么。

2 个答案:

答案 0 :(得分:3)

使用linq并将它们作为ListItem的

返回
MyDBEntities _entities = new MyDBEntities();
var data = from v in _entities.Vendors
           from c in _entities.Companies
           where v.CompanyId = c.CompanyId
           select new ListItem{Value = v.VendorId, Text = c.CompanyName};

return data;

答案 1 :(得分:3)

连接表并返回ListItems

的集合
MyDBEntities _entities = new MyDBEntities();
var results = from v in _entities.Vendors
              join c in _entities.Companies on v.CompanyId equals c.CompanyId
              select new ListItem{Value = v.VendorId, Text = c.Name};

return results;