在MVC 5.1 Web应用程序项目中,我有一个专用于项目的Facebook Canvas应用程序的控制器。我需要控制器返回的所有视图都有一个特定的布局。 (通常情况下,我不会在控制器中定义Layout属性,因为它在View上会有太多的说法,但在这种情况下,我愿意让控制器指示这一点,因为它完全是关于facebook canvas)。
我可以通过返回
来实现这一目标return View("View", "~/Views/Shared/_FacbookCanvasLayout.cshtml");
但在这种情况下,我必须在每个视图中使用它。我想要的是覆盖基本控制器类中的OnActionExecuted
方法并在那里定义布局。
所以我的问题是,如何在OnActionExecuted
类中定义视图的布局 - 或者如果有更好的解决方案,我该怎么做?
答案 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";
}