【发布时间】:2016-09-24 15:38:43
【问题描述】:
在我的模型上正确实施 LINQ 时遇到问题。现在我有它,当用户点击“列表曲目”视图时,他们将收到数据库中每首歌曲的列表。我想要做的是在顶部添加另一个链接,例如“流行曲目”,并在用户单击它时拥有它,它将按其 GenreId(流行音乐)为 9 对所有歌曲进行排序。我不确定如何完成此操作,因为我不明白您将如何从 1 index() 方法返回多个视图(如果这就是我会这样做的话?)。任何帮助表示赞赏。
我现在收到此错误:
异常详细信息:AutoMapper.AutoMapperMappingException:缺少类型 映射配置或不支持的映射。
映射类型:流派 -> TrackBase Assignment_3.Models.Genre -> Assignment_3.Controllers.TrackBase
来源错误:
第 74 行:{ 第 75 行:var AllPop = ds.Genres.Where(p => p.GenreId == 9);第 76 行:返回 mapper.Map>(AllPop);第 77 行:} 行 78:
Manager.cs:
public IEnumerable<TrackBase> TrackGetAll()
{
return mapper.Map<IEnumerable<Track>, IEnumerable<TrackBase>>(ds.Tracks);
}
public IEnumerable<TrackBase> TrackGetAllPop()
{
var AllPop = ds.Genres.Where(p => p.GenreId == 9);
return mapper.Map<IEnumerable<TrackBase>>(AllPop);
}
TrackController.cs:
public ActionResult Index(int? genreid)
{
if (genreid.HasValue && genreid.Value == 9)
{
return View(m.TrackGetAllPop());
}
return View(m.TrackGetAll());
}
AutoMapperConfig.cs:
cfg.CreateMap<Models.Track, Controllers.TrackBase>();
cfg.CreateMap<Controllers.TrackBase, Controllers.TracksController>();
【问题讨论】:
-
您的方法需要是
Index(int? genre),并且您将链接中的流派值作为路由参数传递-@Html.ActionLink("Pop Tracks", "Index", new { genre = 9 })(将评论参考您的last question)。然后它只是var tracks = m.TrackGetAll(); if (genre.HasValue) { tracks = tracks.Where(x => x.GenreId =genre); } return View(tracks); -
现在收到上面这个错误
-
这与您的问题无关(这是关于将值传递给方法)。您需要花一些时间阅读帮助文件以了解如何使用本网站。
标签: c# asp.net-mvc linq