I'm making a Hero app using 2sxc. On the DNN site I'm working on, the administrator set the "Large Icon" via the page settings to have a banner image. I would like to grab this banner image and use it within the 2sxc app.
I thought I might be able to use @CmsContext.Page.LargeIcon but that renders an error:
"error CS1061: 'ToSic.Sxc.Context.ICmsPage' does not contain a definition for 'LargeIcon' and no extension method 'LargeIcon' accepting a first argument of type 'ToSic.Sxc.Context.ICmsPage' could be found"
Is it possible to grab the page's Large Icon for display within a 2sxc app?
We have (Accuraty has) a few utility functions that help us get at this stuff (when 2sxc doesn't make it easy in .Razor12+). In general, you can do it on the fly with something like:
var pageTabInfo = DotNetNuke.Entities.Tabs.TabController.Instance.GetTab(PageId, SiteId);
This returns a TabInfo object so then just:
@pageTabInfo.IconFileLarge
If you want a working function you can reuse:
@inherits Custom.Hybrid.Razor14
@using DotNetNuke.Entities.Portals // PortalSettings
@using DotNetNuke.Entities.Tabs // TabInfo
@functions {
public TabInfo GetPage(int pageId, int siteId = -1)
{
if (siteId == -1)
{
siteId = PortalSettings.Current.PortalId;
}
return TabController.Instance.GetTab(pageId, siteId);
}
}
Then call it like this:
<p>Page (TabInfo) .IconFileLarge = @GetPage(CmsContext.Page.Id).IconFileLarge</p>
@inherits Custom.Hybrid.RazorTyped
,
Then instead of CmsContext.Page...
, you would use MyPage...
<p>Page (TabInfo) .IconFileLarge = @GetPage(MyPage.Id).IconFileLarge</p>