在
MoviesController
Details
方法中,我想显示电影所属的集合。我想我可以把它放在 ViewData
中以显示在页面上。我将 MovieCollections
和 Collections
添加到 Movie
对象中,我可以在调试器中看到该集合,但智能感知不允许我将其放入 ViewData
中。
换句话说,它不会让我这样做...
ViewData["Collection"] = movie.MovieCollections.Collection.Name;
这是 LINQ
movie = await _context.Movie
.Include(m => m.Cast)
.Include(m => m.Crew)
.Include(m => m.MovieCollections)
.ThenInclude(m => m.Collection)
.FirstOrDefaultAsync(m => m.MovieId == id);
具有相关属性的模型:
public class Movie
{
public int Id { get; set; }
//The movieID from TMDB.
public int MovieId { get; set; }
public ICollection<MovieCollection> MovieCollections { get; set; } = new HashSet<MovieCollection>();
}
public class MovieCollection
{
public int Id { get; set; }
public int CollectionId { get; set; }
public int MovieId { get; set; }
public virtual Collection Collection { get; set; }
public virtual Movie Movie { get; set; }
}
public class Collection
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public ICollection<MovieCollection> MovieCollections { get; set; } = new HashSet<MovieCollection>();
}
感谢您提前提供帮助
MovieCollections
是ICollection
的类型,您需要阅读ICollection
中的属性,如下所示:
ViewData["CollectionNames"] = movie.MovieCollections.Select(mc => mc.Collection.Name).ToList();
然后您可以显示如下名称:
@if (ViewData["CollectionNames"] is List<string> collectionNames && collectionNames.Any())
{
<ul>
@foreach (var name in collectionNames)
{
<li>@name</li>
}
</ul>
}
else
{
<span>No collections</span>
}