0
私はInvoice
という名前のテーブルを持っており、託送ノートには子テーブル項目があります。そして商品のテーブルがあります。 MVC 5では結論ページあたりの子レコード
ページ上の次のような構成にすることが可能だった:
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@foreach (var items in item.ListProdukts)
{
@Html.DisplayFor(modelItem => items.Produkts.ProduktName)
}
をしかし、これはASP.NETコアでは動作しません。
モデル:
namespace Proba3.Models
{
public class Invoice
{
public int InvoiceId { get; set; }
public string InvoiceName { get; set; }
public ICollection<ListProdukt> 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<ListProdukt> ListProdukts { get; set; }
}
}
コントローラ:
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<IActionResult> Index()
{
var applicationDbContext = _context.Invoice.Include(c => c.ListProdukts);
return View(await applicationDbContext.ToListAsync());
}
再生回数:
@model IEnumerable<Proba3.Models.Invoice>
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.InvoiceName)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.InvoiceName)
</td>
<td>
@foreach (var items in item.ListProdukts)
{
<p>@Html.DisplayFor(modelItem => items.ProduktId)</p>
<p>@Html.DisplayFor(modelItem => items.Produkts.ProduktName)</p>
}
</td>
<td>
なぜProduktNameが表示されませんか?
aspコアこれも動作します。 編集: プロダクトのリストを初期化していないようです。コントローラにコードを表示できますか? – Ridikk12
コメントを投稿して回答を更新しないでください。そのかなり読みにくい – Tseng
[NullReferenceExceptionとは何ですか?それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-私が直します) –