首页 > 解决方案 > 如何在 Root.Master.cs 中获取 EPIServer 当前加载页面的块?

问题描述

我正在尝试获取 a 的块CurrentPage(如果它是特定页面)Root.Master.cs,但我无法找到方法,如何做到这一点。

我试图用它的 ID(一个静态数字)加载块,但审阅者说你需要找到另一种方法。

public MapMode CurrentMapMode
{
    get
    {
        if (!(CurrentPage is EstateDisplayPage))
            return MapService.GetMapMode(Request.QueryString, CurrentPage as ISiteWithMap);
        var block = ServiceLocator.Current.GetInstance<IContentLoader>()
            .Get<IContent>(new ContentReference(10861)); //MapBlock ID: 10861
        return MapService.GetMapMode(Request.QueryString, block as ISiteWithMap);
    }
}

我需要找到另一种方法来查找block,我不需要将静态数字 ( ID) 传递给ContentRefrence. 提前致谢

标签: c#asp.netwebformsepiserver-7

解决方案


这就是我为获得Blocks特定页面所做的工作Root.Master.cs

public MapMode CurrentMapMode
{
    get
    {
        if (!(CurrentPage is EstateDisplayPage))
            return MapService.GetMapMode(Request.QueryString, CurrentPage as ISiteWithMap);

        var page = CurrentPage as EstateDisplayPage;
        foreach (var item in page.ContentArea.Items)
        {
            var block = ServiceLocator.Current.GetInstance<IContentLoader>()
            .Get<IContent>(item.GetContent().ContentLink);
            if (block is ISiteWithMap)
            {
                return MapService.GetMapMode(Request.QueryString, block as ISiteWithMap);
            }
        }
        return MapMode.Google;
    }
}

推荐阅读