У меня есть ситуация, когда я должен sh отрендерить 2 частичных представления в одном макете. html один под другим. Каждый частичный вид принадлежит отдельному контроллеру. Я обработал это, используя 2 различных подхода, первый, который я хотел, чтобы это работало, не удался. То, что я хотел, это иметь частичное представление контроллера категорий (см. Ниже div-id в layout.cs html), а затем под ним отображать частичное представление категории 2.
скажем, это мой _Layout. cs html
<!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>© @DateTime.Now.Year - My MVC Application</p>
</footer>
</div>
</body>
</html>
Это приводит к отображению представления контроллера div категории1 только тогда, когда я запускаю приложение (но не частичное представление категории2), а частичное представление категории категории2 отображается по другому URL-адресу (когда я пишу путь к контроллер и представление в браузере), и я хотел, чтобы он отображался на той же странице чуть ниже под категорией.
Мой следующий подход, который сработал, состоял в том, что я просто сохранил этот раздел категории (строка ниже) в частичном представлении 'DispatchedProducts
'внизу DisplayDispatchedProducts.cshtml
и отображалось именно то, что я ожидал.
<div id="categoris2" class="col-lg-3">
@Html.Action("DisplayUnDispatchedProducts", "UnDispatchedProducts")
</div>
Complete DisplayDispatchedProducts.cs html примерно так:
@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
, как я упоминал выше. Который я ожидал отобразить оба в ряд ниже друг друга. Возможно ли это случиться? Как заставить это работать?
Пожалуйста, дайте мне знать, если нужна какая-либо другая информация