2013-12-12 2 views
1

У меня есть три объекта:Как пройти два LINQ присоединился таблицы из контроллера для просмотра

public class Part 
    { 
     [Key] 
     public int ID { get; set; } 
     public string Number { get; set; } 
     public string Name { get; set; } 
     public int descID { get; set; } 

    } 

public class Description 
    { 
     [Key] 
     public int descID { get; set; } 
     public string descName { get; set; } 
     public string description { get; set; } 
    } 

public class GridPart 
    { 
     public string name{ get; set; } 
     public string number { get; set; } 
     public string description { get; set; } 

    } 

Я использую LINQ, чтобы присоединиться к части и описание на колонке descID:

public ActionResult Index() 
     { 

      var myParts = from p in db.Parts 
          join d in db.Description on p.descID equals d.DescriptorID 
          select new { Description = d.description, Name = p.name}; 
      List<GridPart> partsList = new List<GridPart>(); 

      foreach (var m in myParts) 
      { 
       GridPart gp = new GridPart(); 
       gp.Name = m.name; 
       gp.description = m.description; 


       partsList.Add(gp); 
      } 
      return View(partsList); 
     } 

Если я только с помощью таблицы частей, по мнению я хотел бы сделать:

@model IEnumerable<MyApp.Models.Part> 

что мне делать, если я использую присоединяемой таблицы? Это использует как части, так и описание, не говоря уже о моем списке грид-панелей, как мне передать это, чтобы отобразить все нужные мне данные?

Любые советы приветствуются.

ответ

2

Если вы передадите анонимный тип вашему представлению, он не будет строго типизирован. Вы можете обратиться к вашей модели, как это вместо

@Html.TextBox("Name") 

или

@Html.Display("Name") 

Хотя это будет работать, я бы посоветовал против него - Лучшее решение было бы пойти с Viewmodel вместо этого. Это сделает ваше представление строго типизированным.

Редактировать: Глядя на это снова, я вижу, что вы фактически не разбираете анонимный тип в своем представлении. Разбор списка GridParts.

Вы должны иметь возможность строго набирать ваше мнение, как и вы, - просто обратитесь к GridParts вместо деталей.

@model IEnumerable<MyApp.Models.GridPart> 
+0

Вы можете использовать AutoMapper для копирования IQueryable в ViewModel – rboarman

+0

Спасибо за отзыв. Я действительно новичок в ASP.net MVC, как я могу использовать ViewModel в моем случае? – DavidB

+0

см. Мой обновленный ответ –

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