我想创建供应商的下拉列表。我的数据库中有一个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>
。但我不知道返回类型应该是什么。
答案 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;