在 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";
}
在 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";
}