0

我有一种情况,我希望在单个 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>

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

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

<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我上面提到的文件中的两个部分视图。我希望在彼此下方连续显示。有可能发生吗?如何使它工作?

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

4

1 回答 1

0

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

  • 渲染部分(字符串部分视图名称)
  • RenderAction(String actionName, String controllerName, Object routeValue)

这些方法中的每一个都有其他覆盖,具体取决于您使用的框架版本。

于 2020-04-18T19:43:35.050 回答