2

有没有办法分配整个控制器使用某种布局?我知道您可以在 ViewStart 中分配布局,无论如何 viewStart 是否知道正在使用哪个控制器?

我的目标是有两个管理布局,一个带有额外的导航栏,当您在管理控制器中使用任何东西时。

4

1 回答 1

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();
    }
}
于 2012-07-21T14:38:26.653 回答