从特定漫画书(ASP.NET MVC)获取系列

时间:2018-02-14 22:25:22

标签: asp.net-mvc

(尚未解决)

所以,我可以在这里使用你们其中一个人的帮助。我目前正在漫画书商店网站上工作,我正试图从我的模型中获取信息。我认为只显示代码和图片更容易,因此您可以准确地看到正在发生的事情:

        public ActionResult Comic(int id)
    {
        ComicVM vm = new ComicVM();
        vm.Comic = db.Comics.Find(id);
        vm.Series = db.Series.FirstOrDefault();

        return View(vm);
    }

正如你所看到的那样,我正试图通过控制器中的id找到一个特定的漫画书,然后让那个特定的漫画书也说出它来自哪个漫画书系列。

    public class Comic
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int PageAmount { get; set; }
    public DateTime DateReleased { get; set; }
    public DateTime Uploaded { get; set; }
    public string ImageUrl { get; set; }

    public Publisher Publisher { get; set; }

    public int SeriesId { get; set; }
    public Series Series { get; set; }
}

这是我使用的模型。

    public class ComicVM
{
    public Comic Comic { get; set; }
    public Series Series { get; set; }
    public Publisher Publisher { get; set; }
}

我的viewmodel,由控制器中的“vm”使用

        @model ComicbookWebpage.Models.ViewModels.ComicVM
@{
    ViewBag.Title = "Comic";
}

<h5><b>Title:</b> @Model.Comic.Title</h5>
<h5><b>Series:</b> @Model.Comic.Series.Title</h5>
<h5><b>Pages:</b> @Model.Comic.PageAmount</h5>

最后,我将我的html渲染的视图。正如你在Series系列中看到的那样,我试着让这本漫画书的特定系列出现在,但每当我尝试它时,它都会给我一个“对象引用未设置为一个对象的实例“。我在控制器中有什么东西可以让它知道从每个漫画书中提取的特定系列吗?我系列表中目前只有2个系列,其中一个有2本漫画书,最后一个有1个。

希望这一切都有意义,并提前感谢。

3 个答案:

答案 0 :(得分:0)

你不是在寻找那个特定漫画系列,你正在寻找所有系列,试试:

public ActionResult Comic(int id)
{
    ComicVM vm = new ComicVM();
    vm.Comic = db.Comics.Find(id);
    vm.Series = db.Series.FirstOrDefault();  //this is looking to all series
    vm.Series = vm.Comic.Series;

    return View(vm);
}

答案 1 :(得分:0)

试试这个

public ActionResult Comic(int id)
{
    ComicVM vm = new ComicVM();
    vm.Comic = db.Comics.Find(id);
    vm.Comic.Series = db.Series.FirstOrDefault(); // <--- (!)

    return View(vm);
}

答案 2 :(得分:0)

我找到了一个代码为Stephen Muecke提供的解决方案,这只是正确编写代码和关系的问题,正如他在评论中所述。

以下是解决方案:

        public ActionResult Comic(int id)
    {
        ComicVM vm = new ComicVM();
        vm.Comic = db.Comics.Include(m => m.Series).Where(m => m.Id == id).FirstOrDefault();

        return View(vm);
    }