我正在为该项目创建学校图书馆。我是ASP.NET MVC环境的新手。我的问题是我需要为每本书展示作者。已经发布了三种模型:书籍,作者,创作者。在“作者”模型中,参考“书籍”和“创建者”表。当我不得不展示一本书的所有作者时,我停了下来。如何显示多位作者的书名?你能给我一些建议吗?
自动模式
namespace WSzkola5.Models
{
public class Autorzy
{
public int Id { get; set; }
public Ksiazka Ksiazka { get; set; }
[Display(Name = "Książka")]
public int KsiazkaId { get; set; }
public Tworca Tworca { get; set; }
public int TworcaId { get; set; }
}
}
Ksiazka模型
namespace WSzkola5.Models
{
public class Ksiazka
{
public int Id { get; set; }
[Required(ErrorMessage = "Tytuł jest wymagany.")]
[Display(Name = "Tytuł:")]
[MaxLength(255, ErrorMessage = "Tytuł jest zbyt długa nazwa.")]
public string Tytul { get; set; }
[Required(ErrorMessage = "UKD jest wymagany.")]
[Display(Name = "UKD:")]
[MaxLength(50, ErrorMessage = "UKD jest zbyt długi.")]
public string UKD { get; set; }
[Required(ErrorMessage = "Opis jest wymagany.")]
[Display(Name = "Opis:")]
public string Opis { get; set; }
}
}
Tworca模型
namespace WSzkola5.Models
{
public class Tworca
{
public int Id { get; set; }
[Required(ErrorMessage = "Imię jest wymagane.")]
[Display(Name = "Imię:")]
[MaxLength(50, ErrorMessage = "Zbyt długa nazwa.")]
public string Imie { get; set; }
[Required(ErrorMessage = "Nazwisko jest wymagane.")]
[Display(Name = "Nazwisko:")]
[MaxLength(100, ErrorMessage = "Zbyt długa nazwa.")]
public string Nazwisko { get; set; }
}
}
自动控制器-索引操作
public ActionResult Index()
{
var autorzy = _context.Autorzys.Include(c => c.Ksiazka).Include(c => c.Tworca).ToList();
return View(autorzy);
}
自动视图-索引
@model IEnumerable<WSzkola5.Models.Autorzy>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Książki</h2>
@if (!Model.Any())
{
<p>
Brak.
</p>
}
else
{<table class="table table-condensed">
<thead>
<th>Książki</th>
<th>UKD</th>
<th>Autor</th>
</thead>
<tbody>
@foreach (var autorzy in Model)
{
<tr>
<td>@autorzy.Ksiazka.Tytul</td>
<td>@autorzy.Ksiazka.UKD</td>
<td>@autorzy.Tworca.Imie @autorzy.Tworca.Nazwisko </td>
</tr>
}
</tbody>
</table>
}
和ViewModel
namespace WSzkola5.ViewModel
{
public class AutorzyViewModel
{
public IEnumerable<Tworca> Tworcas { get; set; }
public IEnumerable<Ksiazka> Ksiazkas { get; set; }
public Autorzy Autorzy { get; set; }
}
}
答案 0 :(得分:0)
在您的模型中,遍历书籍并不像现在这样简单:
typeof
将遍历作者,如果书中有很多作者,则该书将在列表中出现几次(每位作者一次)。我不确定是您的目标。无论如何,要列出该书的所有作者,您必须像这样汇总他们:
System.Type
但是我个人改变了模型,使Book拥有作者列表,然后遍历书籍。