C# 在我的asp mvc站点中找不到艺术家

C# 在我的asp mvc站点中找不到艺术家,c#,asp.net-mvc,C#,Asp.net Mvc,你好,我正在尝试制作一个音乐应用程序来共享音乐,但我有以下问题 我把红色圆圈放在那里,我想把我在班上做的艺术家放进去。我试着用字典,但无法使用分机页面列表 上述网页的视图如下所示: <div class="panel panel-default"> <table class="table"> @foreach (var item in (IEnumerable<Song>) ViewData["songs"]) { <t

你好,我正在尝试制作一个音乐应用程序来共享音乐,但我有以下问题

我把红色圆圈放在那里,我想把我在班上做的艺术家放进去。我试着用字典,但无法使用分机页面列表

上述网页的视图如下所示:

<div class="panel panel-default">
<table class="table">

    @foreach (var item in (IEnumerable<Song>) ViewData["songs"])
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Genre)
            </td>
            <td>
                <a class="artist">Artiest</a>
            </td>
            <td>
                <a class="playbtn btn btn-sm btn-default btn-circle pull-right" data-item="@item.Mp3File"><span class="glyphicon glyphicon-play"></span></a>
            </td>
            <td>
                <button class="btn btn-default glyphicon glyphicon-plus favoritebutton pull-right">Add to favorites</button>
            </td>
        </tr>
    }
</table>
    public ActionResult Index(int page = 1, int pagesize = 8)
    {
            List<Artist> artists = artistRepository.GetArtistBySongID(int id);
            List<Song> songs = songRepository.ReadSongs();
            List<Song> recommended = songRepository.GetFavoritesById(Convert.ToInt32(Session["userid"]));
            ViewData["recommended"] = recommended;
            PagedList<Song> pagedList = new PagedList<Song>(songs, page, pagesize);
            ViewData["songs"] = pagedList;  
            return View();  
    }
列表艺术家=ArtistRespository.GetArtistBySongidit id

这是你的第一个问题。您需要一个艺术家列表,每个艺术家对应一首歌,但您只给它一首歌的id。这将返回一个艺术家,而不是列表。所以,你需要浏览你的歌曲列表,拿出id,找到那首歌的艺术家,然后建立一个列表

List<Artist> artists = new List<Artist>();
List<Song> songs = songRepository.ReadSongs();

PagedList<Song> pagedList = new PagedList<Song>(songs, page, pagesize); 
foreach(var song in pagedList)
      artists.Add(artistRepository.GetArtistBySongID(song.ID));

ViewData["songs"] = pagedList; 
ViewData["artists"] = artists;
然后在你看来,改变

@foreach (var item in (IEnumerable<Song>) ViewData["songs"])
{
致:


.GetArtistBySongidit id;-这不会编译??身份证是从哪里来的?这就是我需要知道的。如何从html页面获取id?歌曲看起来像什么?你能编辑你的问题来显示Song类的代码吗看起来你有建模问题-为什么你需要一个单独的GetArtistBySongID-我觉得SongID上应该有一个Artister属性我需要为此创建一个modelview吗?我可以用什么方式使用它,你能给我举个例子吗?
List<Song> songs = songRepository.ReadSongs();

PagedList<Song> pagedList = new PagedList<Song>(songs, page, pagesize); 
var songartists = new List<Tuple<Song, Artist>> 

foreach(var song in pagedList)
      songartists .Add(Tuple.Creeate(song, artistRepository.GetArtistBySongID(song.ID)));

ViewData["songs"] = songartists ; 
@foreach (var item in (IEnumerable<Song>) ViewData["songs"])
{
@foreach (var song in (IEnumerable<Tuple<Song, Artist>) ViewData["songs"])
{
    var item = song.Item1;
    var artist = song.Item2;