2016-06-27 4 views
0

Я нахожусь в ASP.NET с использованием лесов MVC. У меня есть таблица с внешним ключом, в которой у нее есть внешний ключ, который я хочу отобразить. Это немного запутывает.Внешний вид внешнего вида ASP.NET MVC

У меня есть таблица устройств, которая связана с таблицей ManufacturerModel с помощью внешнего ключа ManufacturerModelID. Таблица ManufacturerModel состоит из первичного ключа ManufacurerModelID, внешнего ключа ManufacturerID (из таблицы производителя) и только поля модели. На экране «Индекс устройства» я хотел бы отобразить «Производитель устройства» (из таблицы «Производитель») и «Модель». В настоящее время он отобразит модель правильно, однако, когда я пытаюсь добавить производителя, я получил всю запись ManufacturerModel, включая заголовки столбцов.

В устройстве контроллер ActionResult для Index() У меня есть следующий:

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

Вы используете сущность framworke и базу данных первый подход? – Hadee

+0

Да, я использую оба –

ответ

0

Это из-за вас столы связи. ваше устройство не имеет прямого отношения к ManufacturerModel. Ваше отношение основано на: устройствах> DeviceType> ManufacturerModel. Попробуйте

Var устройства = db.Devices.Include (д => d.DeviceType) .INCLUDE (д => d.DeviceType.ManufacturerModel);

+0

Это не позволяет мне добавить 'd.DeviceType.ManufacturerModel', поскольку это не выбор в DeviceType. Это две разные таблицы. Если я добавлю «d.ManufacturerModel.Manufacturer», я получил сообщение об ошибке «Мой вид возврата» (devices.ToList()); –

+0

Это всего лишь образец. вы должны иметь доступ к таблице ManufacturerModel через таблицу devicetype. просто проверьте имена объектов в devicetype. – Hadee

+0

спасибо, я получил его на работу –

1

Итак, если я правильно понял, у вас есть

Device - [ManufacturerModel] -> ManufacturerModel - [ManufacturerID] -> Производитель

Если это так, и внешние ключи являются правильно определенный у вас есть класс в вашей модели с именем 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) 
+0

Спасибо, что сработало для меня. –

Смежные вопросы