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-我修复它) –