Я создаю приложение ASP.NET MVC и хочу использовать частичный вид для отображения моих категорий продуктов. Это будет веб-магазин, и на каждой странице, ниже строки меню, я хочу показать еще один бар, который содержит все категории продуктов.Как использовать частичные представления в ASP.NET MVC?
Я хочу использовать частичный вид для этого. В настоящее время в ~/Views/Categories
Я создал частичный вид _CategoriesHeader.cshtml
. (Я сделал это, выбрав "Partial View" в диалоговом окне "Create New View", так что это на самом деле частичный вид)
содержимое _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>
Сейчас в ~/Views/Shared/_Layout.cshtml
я добавил следующий фрагмент кода:
@Html.Partial("~/Views/Categories/_CategoriesHeader.cshtml", new Webshop.DAL.ShopContext().Categories.ToList())
Мне интересно, если это правильный способ использования частичных представлений, требующих модели. Теперь он только встроенный создает новый объект DbContext для получения всех категорий, но я думаю, что лучше иметь модель. Но я не знаю, как это сделать. Я сделал что-то, где у CategoriesController.cs
был метод для этого частичного представления, но это не сработало, потому что в содержащем представлении уже была загружена собственная модель.
Воспроизведение 'DbContext' в представлении противоречит шаблону MVC. Вы должны изменить модель основного представления как объекта, который содержит все элементы для представления и любые частичные. – Nate
Есть ли какая-либо конкретная причина, по которой вы хотите перечислить категории продуктов в виде частичного представления? – RavB
Потому что я хочу, чтобы это было на каждой странице этого веб-клиента. Есть ли способ лучше? – JeroenJK