2015-11-09 2 views
0

Я пытаюсь вернуть следующий список на мой взгляд:Inner присоединиться к viewBag

var Things = from a in db.Things 
       where a.ID == id 
       join b in db.IssueTypes on a.ID equals b.ID 
       select a; 

    List<Things> currentThings = Things.ToList(); 
     ViewBag.currentThing = currentThings; 

ЧТ вид:

@foreach (var item in ViewBag.currentThing) 
{ 
<table> 
       <tr> 
        <td>Title</td> 
        <td>@item.Title</td> 
       </tr> 
       <tr> 
        <td>ID</td> 
        <td>@item.ID</td> 
       </tr> 
       <tr> 
        <td>Description from Inner join:</td> 
        <td>@item.b.Description</td> 
       </tr> 
</table> 
} 

Я пытаюсь отобразить строку из внутреннего соединения, как @item.b.Description. Но это не работает. Каков правильный способ сделать это?

+0

«Но это не работает». Каким образом именно? Вы получаете сообщение об ошибке, не отображаются ли данные на странице? Кроме того, можете ли вы показать метод контроллера, который выполняет ваш код, пожалуйста? Может помочь дать контекст потенциальным ответам. –

+1

Пользователь a ViewModel вместо ViewBag –

+0

@JasonEvans ошибка: .... не содержит определения для 'b' –

ответ

0

Проблема вы только проектирование a что означает ваш запрос возвращает только свойства db.Things, чтобы получить свойства db.IssueTypes, а вы должны будете проецировать как так: -

var Things = from a in db.Things 
       where a.ID == id 
       join b in db.IssueTypes on a.ID equals b.ID 
       select new { a, b }; 

Тогда назначьте это непосредственно ViewBag, как это: -

ViewBag.currentThing = Things; 

Наконец, вы можете использовать b.Description в вашем View.

Хотя, я бы предложил вам создать ViewModel и создать сильно тип View.

+0

, если я использую @ item.b.Description: 'object' не содержит определения для 'b' –

+0

@JasonB - Вы уверены, что включили 'new {a, b}'? Надеюсь, вы скомпилировали код. –

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