如何在 ASP.NET MVC 中使用部分视图?

2024-03-31

我正在构建一个 ASP.NET MVC 应用程序,并希望使用部分视图来显示我的产品类别。它将是一个网上商店,在每个页面上的菜单栏下方,我想显示另一个包含所有产品类别的栏。

我想为此使用部分视图。目前在~/Views/Categories我创建了部分视图_CategoriesHeader.cshtml。 (我通过在“创建新视图”对话框中选择“部分视图”来做到这一点,所以它实际上是一个部分视图)

的内容_CategoriesHeader.cshtml如下:

@model IEnumerable<Webshop.Models.Category>

@{
    Layout = null;
}

<ul>
    @foreach (var category in Model)
    {
        <li>@Html.ActionLink(category.Name, "Category", "Categories", new { ID = category.CategoryID }, null)</li>

    }
</ul>

Now in ~/Views/Shared/_Layout.cshtml我添加了以下代码:

@Html.Partial("~/Views/Categories/_CategoriesHeader.cshtml", new Webshop.DAL.ShopContext().Categories.ToList())

我想知道这是否是使用需要模型的部分视图的正确方法。现在它只是内联创建一个新的 DbContext 对象来获取所有类别,但我认为最好有一个模型。 但我不知道该怎么做。我做了一些事情CategoriesController.cs有一个用于此部分视图的方法,但这不起作用,因为包含视图已经加载了自己的模型。


不可以。您不应在视图内执行任何 DAL 操作。我实际上建议只使用if, foreach以及类似的言论。没有其他的。在控制器中准备数据并将其传入。

你应该把new Webshop.DAL.ShopContext().Categories.ToList()进入主视图中使用的模型,并将其传递给局部视图。

@Html.Partial("~/Views/Categories/_CategoriesHeader.cshtml", Model.Categories)

您可能需要一个foreach如果你想呈现列表中的数据。

如果您想对每个页面执行此操作,则应该创建一个新操作,并让该操作呈现,而不是部分视图。 (该操作应调用部分视图)。该操作可以获取所需的信息并将其传递到视图上。

@Html.Action("CategoriesHeader")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET MVC 中使用部分视图? 的相关文章

随机推荐