Показать все дочерние элементы всех родительских элементов в одном представлении - PullRequest
0 голосов
/ 22 февраля 2012

В настоящее время я использую модель представления для отображения списка родителей (исполнителей) в представлении индекса, которое включает в себя ActionLink, который перенаправляет на Index / 5 для отображения списка детей (альбомов), в то же время показывая полный списокиз родителей.

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

Кажется, что это должно быть просто, и я стараюсь сделать этот пример максимально простым (избегая частичных представлений и т. Д.), Но я нигде не смог найти сравнительный учебник или ответил на вопрос - (вполне может быть, чтоЯ ищу неправильные термины!).

Любая помощь в том, правильно ли я поступаю, будет принята с благодарностью.

Контроллер

    // GET: /ArtistsTest/

    public ActionResult Index(Int32? id)
    {
        var viewModel = new TestViewModel();
        viewModel.Artists = db.Artists
            .Include(a => a.Albums);

        if (id != null)
        {
            ViewBag.ArtistID = id.Value;
            viewModel.Albums = viewModel.Artists.Where(a => a.ArtistID == id.Value).Single().Albums;
        }

        return View(viewModel);
    }

Вид:

@foreach (var artist in Model.Artists)
{
    <p>
        @Html.DisplayFor(modelItem => artist.ArtistID)
        @Html.DisplayFor(modelItem => artist.ArtistName)
        @Html.ActionLink("Select", "Index", new { id = artist.ArtistID })
    </p>
}
<br />
@if (Model.Albums != null)
{
    <p>
        Albums:
        @foreach (var album in Model.Albums)
        {
            <p>
                @Html.DisplayFor(albumItem => album.AlbumName)
            </p>  
        }
    </p>
}

1 Ответ

0 голосов
/ 22 февраля 2012

Вид:

@foreach (var artist in Model.Artists)
{
    <p>
        @Html.DisplayFor(modelItem => artist.ArtistID)
        @Html.DisplayFor(modelItem => artist.ArtistName)
        @Html.ActionLink("Select", "Index", new { id = artist.ArtistID })

        @foreach(var album in artist.Albums){
            <p>
                @Html.DisplayFor(albumItem => album.AlbumName)
            </p>  
        }
    </p>
}

Контроллер:

public ActionResult Index()
{
    var viewModel = new TestViewModel();
    viewModel.Artists = db.Artists.Include(a => a.Albums);

    return View(viewModel);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...