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       
        ));
    }
}
Другие вопросы по тегам