Ошибка компилятора в музыкальном магазине MVC - PullRequest
1 голос
/ 10 августа 2011

Я подошел к концу учебного пособия по музыкальному магазину MVC и изменил все по своему вкусу. В учебном пособии магазин позволяет просматривать по жанрам и отображать все альбомы в этом жанре, я изменил все так, чтобы вместо этого он выводит список всех исполнителей и работает нормально, пока вы не нажмете на исполнителя, он не вызовет альбомы этого исполнителя.

Сообщение об ошибке компилятора: 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 ]

3 голосов
/ 10 августа 2011

Вы можете изменить свой ActionResult так, чтобы он возвращался как список альбомов для вашей модели

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

        return View(albums);
    }

И тогда, в вашем представлении, вы можете перебирать коллекцию IEnumerable

    @model IEnumerable<MvcMusicStore.Models.Album>

    ...

    @foreach (var album in Model)
3 голосов
/ 08 декабря 2012

Проверьте директиву StoreManagerIndexview Page.

должно быть как ниже

<@Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
    Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcMusicStore.Models.Album>>">
1 голос
/ 10 августа 2011

Ошибка говорит вам, что Album не реализует IEnumerable, что имеет смысл, поскольку это не тип коллекции.Я предполагаю, что вы хотите перебрать коллекцию Album, а не сам экземпляр Album.

...