在 OnActionExecuted 中为视图定义布局

Defining Layout for the View in OnActionExecuted

在 MVC 5.1 web 应用程序项目中,我有一个专用于 Facebook Canvas 项目应用程序的控制器。我需要控制器返回的所有视图都具有特定的布局。 (通常情况下,我不会在控制器中定义 Layout 属性,因为它在 View 上有太多话要说,但在这种情况下,我愿意让控制器来决定这一点,因为这都是关于 facebook canvas).

我可以通过返回来实现这个

return View("View", "~/Views/Shared/_FacbookCanvasLayout.cshtml");

但在那种情况下,我必须对每个视图都使用它。我想要的是覆盖基本控制器 class 中的 OnActionExecuted 方法并在那里定义布局。

所以我的问题是,如何在 OnActionExecuted class 中定义视图的布局 - 或者如果对此有更好的解决方案,我该怎么做?

那么这样做怎么样?

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);
        var res = filterContext.Result as ViewResult;
        if (res != null)
            res.MasterName = "~/Views/Shared/_FacbookCanvasLayout.cshtml";
    }