我在ASP.NET中使用MVC脚手架。我有一个具有外键的表,其中有一个我希望显示的外键。这有点令人困惑。
我有一个设备表,它通过ManufacturerModelID的外键链接到ManufacturerModel表。 ManufacturerModel表由ManufacurerModelID的主键,ManufacturerID的外键(来自Manufacturer表)和Model字段组成。在我的设备索引屏幕中,我想显示设备的制造商(来自制造商表)和模型。目前它将正确显示模型,但是当我尝试添加制造商时,我收到了整个ManufacturerModel记录,包括列标题。
在Index Controller的设备控制器ActionResult中,我有以下内容:
var devices = db.Devices.Include(d => d.DeviceType).Include(d => d.ManufacturerModel);
return View(devices.ToList());
在我的设备索引中,我有以下制造商和型号
<th>
@Html.DisplayNameFor(model => model.ManufacturerModel.ManufacturerID)
</th>
<th>
@Html.DisplayNameFor(model => model.ManufacturerModel.Model)
</th>
答案 0 :(得分:1)
所以,如果我理解正确,你有
设备 - [ManufacturerModel] - &gt; ManufacturerModel - [ManufacturerID] - &gt;制造商
如果是这种情况,并且正确定义了外键,则模型中有一个名为Device
的类,其中包含一个名为ManufacturerModel
的属性,该属性具有一个名为Manufacturer
的属性其中包含与Manufacturer表的列相关的属性。我将假设您分别有Name
属性和列,并且您希望显示类似
<tr>
<th>
@Html.DisplayNameFor(model => model.ManufacturerModel.Manufacturer.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.ManufacturerModel.Model)
</th>
</tr>
<tr>
<td>@model.ManufacturerModel.Manufacturer.Name</td>
<td>@model.ManufacturerModel.Model</td>
<tr>
然后,在创建查询时,您还必须包括(加入)Manufacturer
表,如
var devices = db.Devices
.Include(d => d.DeviceType)
.Include(d => d.ManufacturerModel)
.Include(d => d.ManufacturerModel.Manufacturer)
答案 1 :(得分:0)
这是因为你的表关系。您的设备与ManufacturerModel没有直接关系。您的关系基于:设备&gt; DeviceType&gt; ManufacturerModel。 试试
var devices = db.Devices.Include(d =&gt; d.DeviceType).Include(d =&gt; d.DeviceType.ManufacturerModel);