MVC音乐商店中的编译器错误

时间:2011-08-10 10:26:28

标签: asp.net-mvc razor

我已经走到了MVC音乐商店教程的最后,我一直在改变我喜欢的东西,在教程中,Store允许你按类型浏览并调出该类型的所有专辑,我已经改变了一切,所以它会显示所有艺术家的名单而且运行正常,直到您点击艺术家,它不会显示该艺术家的专辑。

编译器错误消息:CS1579:foreach语句无法对“MVCMusicStore.Models.Album”类型的变量进行操作,因为“MVCMusicStore.Models.Album”不包含“GetEnumerator”的公共定义

这是我收到的错误消息,是否有人知道如何修复此问题,以便艺术家调出相册?

@model MVCMusicStore.Models.Album

@{
    ViewBag.Title = "Browse Albums";
}

<div class="genre">
    <h3><em>@Model.Artist</em> Albums</h3>

    <ul id="album-list">
        @foreach (var album in Model)
        {
            <li>
                <a href="@Url.Action("Details", 
                    new { id = album.AlbumId })">
                    <img alt="@album.Title" 
                        src="@album.AlbumArtUrl" />
                    <span>@album.Title</span>
                </a>
            </li>
        }
    </ul>
</div>

3 个答案:

答案 0 :(得分:3)

您可以将ActionResult更改为以相册列表作为模型返回

    public ActionResult BrowseAlbums()
    {
        var albums = storeDB.Albums.ToList();

        return View(albums);
    }

然后在您的视图中,您可以遍历IEnumerable集合

    @model IEnumerable<MvcMusicStore.Models.Album>

    ...

    @foreach (var album in Model)

答案 1 :(得分:3)

验证StoreManagerIndexview Page指令。

应该如下所示

<@Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
    Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcMusicStore.Models.Album>>">

答案 2 :(得分:1)

错误告诉您Album没有实现IEnumerable,这有意义,因为它不是集合类型。我假设您想要遍历Album的集合,而不是Album本身的实例。