Orchard CMS 一个内容部分在多个视图上



存在模型 - \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 为空。

我可以在视图类别菜单中获取标题部分吗?

您应该能够像这样访问该部分:

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       
        ));
    }
}

最新更新