在OnActionExecuted中定义视图的布局

本文关键字:布局 视图 定义 OnActionExecuted | 更新日期: 2023-09-27 18:25:22

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

我可以通过返回来实现这一点

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

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

因此,我的问题是,我如何在OnActionExecuted类中定义视图的布局?或者,如果有更好的解决方案,我如何做到这一点?

在OnActionExecuted中定义视图的布局

这样做怎么样?

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