ASP.NET Core 6 MVC多对多关系中获取关联属性遇智能感知问题
影片合集信息展示的代码修正
问题核心:Movie.MovieCollections是ICollection.Collection访问合集信息,这就是智能感知报错的原因。
针对性解决方案
根据业务场景分为两种处理方式:
场景1:单影片仅归属一个合集
如果业务规则限定一部电影只属于一个合集,直接取集合首个元素即可:
// 先判断集合是否非空,避免空引用异常 if (movie.MovieCollections?.Any() == true) { ViewData["Collection"] = movie.MovieCollections.First().Collection.Name; }
场景2:单影片可归属多个合集
若支持多合集关联,可选择以下两种方式传递数据到视图:
// 方式1:将所有合集名称拼接为字符串 if (movie.MovieCollections?.Any() == true) { ViewData["Collections"] = string.Join(", ", movie.MovieCollections.Select(mc => mc.Collection.Name)); } // 方式2:直接传递合集对象集合,方便视图灵活渲染 ViewData["CollectionList"] = movie.MovieCollections?.Select(mc => mc.Collection).ToList();
额外提示
为避免空引用异常,建议始终在访问集合或嵌套属性前做非空判断;如果业务上确定影片与合集是一对一关系,可考虑修改模型为单个MovieCollection属性而非集合,进一步简化代码。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

