如何检查:一个“名称”有很多值

时间:2019-04-20 22:11:41

标签: c# asp.net model-view-controller

我正在为该项目创建学校图书馆。我是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; }
    }
}

1 个答案:

答案 0 :(得分:0)

在您的模型中,遍历书籍并不像现在这样简单:

typeof

将遍历作者,如果书中有很多作者,则该书将在列表中出现几次(每位作者一次)。我不确定是您的目标。无论如何,要列出该书的所有作者,您必须像这样汇总他们:

System.Type

但是我个人改变了模型,使Book拥有作者列表,然后遍历书籍。