我正在努力改进属于我们公司Orchard网站的自定义部分。它是一个弹出菜单,显示用户的用户名,个人资料图片和菜单。目前,用户名和个人资料图像是从我们编写的配置文件模块中检索的,菜单部分只是在模板中硬编码的静态文本。我想改变它以使用Orchard菜单来获取菜单项。我一直尝试通过获取菜单小部件,然后将该内容呈现为模板的一部分以便在模板中显示来实现此目的:
WidgetPart widget = _widgetService.GetWidgets().Where(w => w.Title == "Profile Menu").SingleOrDefault();
if (widget == null)
throw new Exception("Not found");
dynamic menuText = _contentManager.BuildDisplay((ContentItem)widget.ContentItem);
//...
return ContentShape("Parts_ProfileHeader", () => shapeHelper.Parts_ProfileHeader(
FullName: fullname,
ImageUrl: imageUrl,
ImageHeight: imageHeight,
ImageWidth: imageWidth,
Menu: menuText
));
但是这导致了stackoverflow异常。我还尝试使用MenuService检索menupart并将其传递给模板,但仅显示菜单标题。
模板显示特定于用户的信息,还包含.showBalloon& .hideBalloon调用以弹出菜单。
有更好的方法可以做到这一点,还是纯粹使用Orchard零件的方法?