有没有办法分配整个控制器使用某种布局?我知道您可以在 ViewStart 中分配布局,无论如何 viewStart 是否知道正在使用哪个控制器?
我的目标是有两个管理布局,一个带有额外的导航栏,当您在管理控制器中使用任何东西时。
有没有办法分配整个控制器使用某种布局?我知道您可以在 ViewStart 中分配布局,无论如何 viewStart 是否知道正在使用哪个控制器?
我的目标是有两个管理布局,一个带有额外的导航栏,当您在管理控制器中使用任何东西时。
您可以编写一个自定义操作过滤器:
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();
}
}