【问题标题】:Should I use C-Linq or a Partial View - or both - to filter on two different view IDs?我应该使用 C-Linq 还是部分视图(或两者都使用)来过滤两个不同的视图 ID?
【发布时间】:2025-12-02 22:05:02
【问题描述】:

我对 .net mvs razor 页面的了解非常有限。所以希望我的问题是有道理的。

  1. 我有一个电影数据库,其中包含:

    一个。媒体表(dvd、vhs 等)

    b.流派表

    c。电影表

  2. 我希望能够单击媒体类型 - 即 DVD - 并让它生成我在 DVD 上可用的类型列表。我为此创建了一个存储过程和一个成功完成此操作的剃须刀页面。

  3. 我还有一个显示特定类型电影的存储过程。还有一个剃须刀页面,可以生成一个流派中的所有电影。

我要解决的问题是将这两者联系起来。如何进入这个流程:点击 dvd => 列出我所有的 DVD 类型 => 点击“Thriller”类型并显示所有属于 Thrillers 的 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>

链接到为每种类型生成的电影模型,但这不起作用,因为我只能使用一个模型(类型模型)。这是否需要使用局部视图?或者我可以使用一些 C-Linq 在我的 .cshtml.cs 文件中解决这个问题吗?我不想花太多精力走错路。

【问题讨论】:

    标签: asp.net-mvc tsql stored-procedures razor-pages


    【解决方案1】:

    您可以在一个页面中使用tuple 格式的多个模型,但恐怕这对您没有帮助。 使用部分视图并将部分响应附加到您的页面。 存储过程或 LINQ,使用任何你喜欢的,但在这种情况下我更喜欢 ORM,所以你可以使用带有部分视图的 LINQ。

    要了解如何在单个页面中使用多个模型,本文可能会对您有所帮助

    multiple-models-in-single-view-in-mvc

    看看那个,也许这不能解决你的问题,但你可以学到一些东西。

    【讨论】:

    • 你有模型-视图-视图模型的文档吗?这个版本使用了我没有使用的控制器。
    最近更新 更多