从块的控制器访问当前页面

时间:2014-11-13 13:18:20

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

我正在使用EPiServer 7.7 MVC并且我有一个本地/全局阻止MyBlock的场景。 MyBlock有一个控制器MyBlockController。我需要获取调用MyBlockController的页面的ID:

 public class MyBlockController : BlockController<MyBlock>{

      public override ActionResult Index(MyBlock currentContent){
          Guid hostingPageId = ????
      }
  }

我查看了BlockDataContentData类,但它们似乎没有任何对主机的引用。

我可以从控制器上下文中获取当前页面的id吗?

1 个答案:

答案 0 :(得分:2)

EPiServer正是为了这个目的而拥有PageRouteHelper 它有一个属性Page,它返回当前请求上下文的当前页面。

所以你的代码会变成:

public class MyBlockController : BlockController<MyBlock>
{
    private readonly PageRouteHelper _pageRouteHelper;

    public override ActionResult Index(MyBlock currentContent)
    {
        Guid hostingPageId = _pageRouteHelper.Page.PageGuid;
    }
}