如何在Root.Master.cs中获取EPIServer当前加载页面的块?

时间:2019-07-09 06:20:43

标签: c# asp.net webforms episerver-7

我正在尝试在CurrentPage中获取Root.Master.cs(如果是特定页面)的块,但是我找不到方法。

我试图用其ID(一个静态数字)加载block,但是Reviewer说您需要找到另一种方法。

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提前感谢

1 个答案:

答案 0 :(得分:0)

这就是我在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;
    }
}