#c_sharp #aspnet #aspnet_mvc
Всем добрый день, кто сталкивался с такой проблемой. Есть таблица Накладная, у нее есть дочерняя таблица товары в накладной. И есть таблица товаров. MVC 5 Можно было на страницы сделать следующею конструкцию: @foreach (var item in Model) {@Html.DisplayFor(modelItem => item.Name) @foreach (var items in item.ListProdukts) { @Html.DisplayFor(modelItem => items.Produkts.ProduktName) } Но в ASP.Net Core это не работает. При том что студия дает в подсказках кода все эти поля. Model: namespace Proba3.Models { public class Invoice { public int InvoiceId { get; set; } public string InvoiceName { get; set; } public ICollection ListProdukts { get; set; } } } namespace Proba3.Models { public class ListProdukt { public int ListProduktId { get; set; } public int ProduktId { get; set; } public virtual Produkt Produkts { get; set; } public int InvoiceId { get; set; } public virtual Invoice Invoices { get; set; } } } namespace Proba3.Models { public class Produkt { public int ProduktId { get; set; } public string ProduktName { get; set; } public ICollection ListProdukts { get; set; } } } Controllers: using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; using Proba3.Data; using Proba3.Models; namespace Proba3.Controllers { public class InvoicesController : Controller { private readonly ApplicationDbContext _context; public InvoicesController(ApplicationDbContext context) { _context = context; } // GET: Invoices public async Task Index() { var applicationDbContext = _context.Invoice.Include(c => c.ListProdukts); return View(await applicationDbContext.ToListAsync()); } Views: @model IEnumerable @{ ViewData["Title"] = "Index"; } Index
@foreach (var item in Model) { @Html.DisplayNameFor(model => model.InvoiceName) @Html.DisplayFor(modelItem => item.InvoiceName) @foreach (var items in item.ListProdukts) { @Html.DisplayFor(modelItem => items.ProduktId)
@Html.DisplayFor(modelItem => items.Produkts.ProduktName)
}Почему не показывает ProduktName? Ответы
Ответ 1
Ответ дали на github. Оказывается ASP.NET Core теперь не добавляет дочерние элементы по умолчанию. Подробно можно прочесть на английском здесь: docs.asp.net В моем случае в Controller надо добавить: в строку: var applicationDbContext = _context.Invoice.Include(c => c.ListProdukts).ThenInclude(c => c.Produkts); вот это: .ThenInclude(c => c.Produkts);Подписаться на: Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий