有没有办法分配整个控制器来使用某种布局?我知道你可以在ViewStart中分配布局,无论如何,viewStart是否知道正在使用什么控制器?
我的目标是在您使用管理控制器中的任何内容时,有两个管理员布局,一个带有额外的导航栏。
答案 0 :(得分:2)
您可以编写自定义操作过滤器:
public class LayoutAttribute : ActionFilterAttribute
{
private readonly string _layout;
public LayoutAttribute(string layout)
{
_layout = layout;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var result = filterContext.Result as ViewResult;
if (result != null)
{
result.MasterName = _layout;
}
}
}
然后使用它装饰你的控制器,所有动作(显然返回视图结果)都将使用你指定的布局:
[Layout("_SimpleLayout")]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
}