Orchard CMS один ContentPart на несколько просмотров
Существующая модель - \Models\HeaderPart.cs. В драйвере хотите создать CategoriesMenuDriver и использовать HeaderPart:
public class CategoriesMenuDriver : ContentPartDriver<HeaderPart>
{
private readonly dynamic shapeFactory;
private readonly IMenuAccessor menuAccessor;
public CategoriesMenuDriver(
IShapeFactory shapeFactory,
IMenuAccessor menuAccessor)
{
this.shapeFactory = shapeFactory;
this.menuAccessor = menuAccessor;
}
protected override DriverResult Display(HeaderPart part, string displayType, dynamic shapeHelper)
{
return this.ContentShape("Parts_CategoriesMenu", () => shapeHelper.Parts_CategoriesMenu(
MenuItems: this.menuAccessor.GetMenu<NavigationMenuItem>("UserAccount")));
}
}
Но в категориях меню просмотра
var headerPart = (HeaderPart)Model.ContentItem.HeaderPart;
Model.ContentItem имеет значение null.
Могу ли я получить HeaderPart в View CategoriesMenu?
1 ответ
Вы должны быть в состоянии получить доступ к части, как это:
HeaderPart part = Model.ContentPart;
Хотя Model.ContentItem
там не должно быть ноль, что странно
РЕДАКТИРОВАТЬ Если это также нуль, вы можете попробовать установить его самостоятельно:
protected override DriverResult Display(HeaderPart part, string displayType, dynamic shapeHelper)
{
return ContentShape("Parts_CategoriesMenu", () => shapeHelper.Parts_CategoriesMenu(
MenuItems: this.menuAccessor.GetMenu<NavigationMenuItem>("UserAccount"),
ContentPart: part
));
}
}