Должен ли я использовать C-Linq или частичное представление - или оба - для фильтрации по двум различным идентификаторам вида? - PullRequest
0 голосов
/ 30 апреля 2019

У меня очень ограниченное знание страниц бритвы .net mvs. надеюсь, мой вопрос имеет смысл.

  1. У меня есть база данных фильмов с:

    а. таблица мультимедиа (DVD, VHS и т. д.)

    б. таблица жанров

    с. таблица фильмов

  2. Я бы хотел иметь возможность щелкнуть по типу мультимедиа (например, DVD) и получить список жанров, которые у меня есть на DVD. Я создал хранимую процедуру для этого и страницу бритвы, которая делает это успешно.

  3. У меня также есть хранимая процедура, которая отображает фильмы определенного жанра. И страница бритвы, которая генерирует все фильмы в жанре.

Проблема, которую я пытаюсь решить, связывает эти два. Как мне попасть в этот поток: нажмите на dvd => список всех моих жанров DVD => нажмите на жанр «Триллер» и отобразите все DVD, которые являются триллерами.

На моей странице бритвы «Медиа» я перечисляю типы медиа и отображаю модель жанров, которая генерирует жанры, когда я выполняю свой список «MediaByGenre». Код ниже:

@page
@model MyMovies.Pages.GenreDetails.DetailsModel

@{
    ViewData["Title"] = "Details";
}

<h4>Genres</h4>
<hr />
<div>
    <table>
        <tr>
            <th>Genre</th>
        </tr>
        @foreach (var item in Model.Genres)
        {
            <tr>
                <td class="col-sm-10">
                    @Html.DisplayFor(Model => item.GenreName)
                </td>
            </tr>
        }
    </table>
</div>

<div>
    <a asp-page="./Index">Back to List</a>
</div>

На моей странице бритвы "Жанр" я показываю модель моего фильма, которая выполняет процедуру генерации "GetMovieByGenre". Вот код бритвы ниже:

@page
@model MyMovies.Pages.MovieDetails.DetailsModel

@{
    ViewData["Title"] = "Details";
}

<table col-width=500>

    <tr>
        <th class="col-sm-2">Movie Title</th>
        <th class="col-sm-2">Movie Year</th>
    </tr>
    @foreach (var item in Model.Movies)
    {
        <tr>
            <td class="col-sm-10">
                @Html.DisplayFor(Model => item.MovieTitle)
            </td>
            <td class="col-sm-10">
                @Html.DisplayFor(Model => item.MovieYear)
            </td>
        </tr>
    }
</table>

<div>
    <a asp-page="./Index">Back to List</a>
</div>

Я попытался использовать a-tag здесь:

<td class="col-sm-10">
      @Html.DisplayFor(Model => item.GenreName)
</td>

для ссылки на модель фильма, сгенерированную для каждого жанра, но это не работает, потому что я могу использовать только одну модель (модель жанра). Это требует использования частичного представления? Или я могу решить это в моем файле .cshtml.cs, используя какой-нибудь C-Linq? Я не хочу тратить слишком много энергии на неправильный маршрут.

1 Ответ

1 голос
/ 30 апреля 2019

Вы можете использовать несколько моделей в формате tuple на одной странице, но я боюсь, что доза вам здесь не поможет. Используйте частичное представление и добавьте частичный ответ на вашу страницу. Хранимая процедура или LINQ, используйте все, что вам нравится, но я предпочитаю ORM в этом случае, чтобы вы могли использовать LINQ с частичным представлением.

Чтобы узнать, как использовать несколько моделей на одной странице, эта статья может вам помочь

множественная-модель-в-одном ракурса-в-MVC

Взгляните на это, возможно, это не решит вашу проблему, но вы можете чему-то научиться.

...