在OnActionExecuted中定义视图的布局

时间:2015-12-02 10:00:26

标签: c# asp.net-mvc facebook-canvas

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

我可以通过返回

来实现这一目标
return View("View", "~/Views/Shared/_FacbookCanvasLayout.cshtml");

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

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

1 个答案:

答案 0 :(得分:1)

那么这样做呢?

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