【问题标题】:Is it possible to display multiple partial view one below row-wise in single _Layout.cshtml?是否可以在单个 _Layout.cshtml 中逐行显示多个局部视图?
【发布时间】:2020-07-31 19:57:21
【问题描述】:

我有一种情况,我希望在单个 layout.cshtml 中呈现 2 个局部视图,一个在另一个之下。每个局部视图都属于单独的控制器。我使用 2 种不同的方法处理它,我希望它工作的第一个方法没有成功。 我想要的是拥有 categoris1 的部分视图控制器(请参阅下面 layout.cshtml 中的 div-id),然后在其下方显示 categoris2 div 的部分视图。

假设这是我的 _Layout.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - ABCD</title>

    <link href="~/Content/bootstrap.min.css" rel="stylesheet" />
    <link href="~/Content/bootstrap-theme.min.css" rel="stylesheet" />
</head>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">

                @Html.ActionLink("TitleName", "Index", "Files", new { area = "" }, new { @class = "navbar-brand" })
            </div>
        </div>
    </div>

    <div class="row panel">

      //My first view should be displayed here
        <div id="categoris1" class="col-lg-3">
            @Html.Action("DispatchedProducts", "DispatchedProducts")
        </div>

      //Second view should be displayed here just below first one
       <div id="categoris2" class="col-lg-3">
            @Html.Action("DisplayUnDispatchedProducts", "UnDispatchedProducts")
        </div>

        <div class="col-lg-8">
            @RenderBody()
        </div>
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - My MVC Application</p>
        </footer>
    </div>
</body>
</html>

这会导致仅在我运行应用程序时显示 categoris1 div 控制器视图(但不是 categoris2 partialview),并且 categoris2 div 部分视图显示在其他 url(当我将路径写入控制器并在浏览器中查看时)和我想要的它是在categoris1下方的同一页面上显示。

我的下一个方法是我只是将这个 categoris2 div(下一行)保留在 DisplayDispatchedProducts.cshtml 底部的“DispatchedProducts”的部分视图中,它完全符合我的预期。

<div id="categoris2" class="col-lg-3">
   @Html.Action("DisplayUnDispatchedProducts", "UnDispatchedProducts")
 </div>

完成 DisplayDispatchedProducts.cshtml 类似这样的内容:

@model  IList<ABC.Models.Product>
@{
    ViewBag.Title = "First view";
}

<div class="col-md-10">
    <h2>Dispatched Items</h2>

    <div class="form-group">
        <label class="col-md-2 control-label">Dispatched Items</label>
        <table>
            @foreach (var item in Model)
            {
                <tc>
                    <td>
                        <img src=@item.ProdUrl height="100" width="100" />
                    </td>
                </tc>
            }
            <hr />
        </table>
    </div>
</div>

并且 DisplayDispatchedProducts 控制器具有这样的方法(类似的是其他控制器和具有相同返回类型但查询不同的部分视图):

 public PartialViewResult DisplayDispatchedProducts()
        {
            productDispatched = uow.ProductsRepository.GetProductWithOrder().ToList();
            return PartialView(productDispatched);
        }

但我想使用第一种方法来调用我上面提到的 _Layout.cshtml 文件中的两个部分视图。我希望在彼此下方连续显示。有可能发生吗?如何让它发挥作用?

如果需要任何其他信息,请告诉我

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5 partial-views asp.net-mvc-partialview html-renderer


    【解决方案1】:

    您是否尝试过调用 Html.RenderPartial 或 Html.RenderAction?

    • RenderPartial(String partialViewName)
    • RenderAction(String actionName, String controllerName, Object routeValue)

    根据您使用的框架版本,这些方法中的每一个都有其他覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多