© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•2y ago•
10 replies
ARK

Display many-to-many table data using view model in controller in ASP.NET Core MVC

I want to display many-to-many table data using a view model in controller but I get this error:

CS0029: Cannot implicitly convert type 'Website.Model.PostModel' to 'System.Collections.GenericList<Website.Model.PostModel>'

Model:
public class PostModel
{
    [Key]
    public int Id { get; set; }

    public List<TagsModel> Tags { get; set; } = new List<TagsModel>();

    public virtual List<PostTagModel> PostTags { get; set; } = new List<PostTagModel>();
}

public class TagsModel
{        
    [Key]
    public int Id { get; set; }

    public List<PostModel> Posts { get; set; }
    public virtual List<PostTagModel> PostTags { get; set; }
}

public class PostTagModel
{
    public int PostId { get; set; }
    public int TagId { get; set; }

    public virtual PostModel Post { get; set; }
    public virtual TagsModel Tag { get; set; }
}
public class PostModel
{
    [Key]
    public int Id { get; set; }

    public List<TagsModel> Tags { get; set; } = new List<TagsModel>();

    public virtual List<PostTagModel> PostTags { get; set; } = new List<PostTagModel>();
}

public class TagsModel
{        
    [Key]
    public int Id { get; set; }

    public List<PostModel> Posts { get; set; }
    public virtual List<PostTagModel> PostTags { get; set; }
}

public class PostTagModel
{
    public int PostId { get; set; }
    public int TagId { get; set; }

    public virtual PostModel Post { get; set; }
    public virtual TagsModel Tag { get; set; }
}


ViewModel:
public class CardsViewModel
{
    public List<PostModel>? PostCard { get; set; }
}
public class CardsViewModel
{
    public List<PostModel>? PostCard { get; set; }
}


Controller:
[HttpGet]
public async Task<IActionResult> Detail(int id)
{
    var TaggedPostVM = new CardsViewModel
    {
        PostCard = await _context.Posts.Include(t => t.PostTags) 
                                    .ThenInclude(p => p.Post)
                                    .SingleAsync(t => t.Id == id);
    };

    return View(TaggedPostVM);
}
[HttpGet]
public async Task<IActionResult> Detail(int id)
{
    var TaggedPostVM = new CardsViewModel
    {
        PostCard = await _context.Posts.Include(t => t.PostTags) 
                                    .ThenInclude(p => p.Post)
                                    .SingleAsync(t => t.Id == id);
    };

    return View(TaggedPostVM);
}

View:
@using RecipeWebsite.ViewModels.CardsViewModel

@model CardsViewModel

@foreach (var item in Model.PostCard)
{
   <!-- HTML -->
}
@using RecipeWebsite.ViewModels.CardsViewModel

@model CardsViewModel

@foreach (var item in Model.PostCard)
{
   <!-- HTML -->
}

When the controller is used without view model, it works without error.

Example:
[HttpGet]
public async Task<IActionResult> Detail(int id)
{
    var Tag = await _context.Posts
                            .Include(t => t.PostTags) 
                            .ThenInclude(p => p.Post)
                            .SingleAsync(t => t.Id == id);

    return View(Tag);
}
[HttpGet]
public async Task<IActionResult> Detail(int id)
{
    var Tag = await _context.Posts
                            .Include(t => t.PostTags) 
                            .ThenInclude(p => p.Post)
                            .SingleAsync(t => t.Id == id);

    return View(Tag);
}
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources
Was this page helpful?

Similar Threads

Recent Announcements

Similar Threads

ASP.Net Core MVC Razor view rendering data from controller with dynamic casting
C#CC# / help
3y ago
❔ Asp.NET Core Controller and View Problem
C#CC# / help
3y ago
Model not binding to View' issue in ASP.NET MVC
C#CC# / help
3y ago
ASP.NET Core MVC Structure
C#CC# / help
4w ago