在 asp.net MVC 3 中,有没有办法从控制器或操作过滤器覆盖视图中设置的布局声明?
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
我尝试过重写 OnResultExecuted 或 OnResultExecuting 中的 MasterName 属性,如以下代码片段所示,但无济于事。
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
var view = filterContext.Result as ViewResult;
view.MasterName = null;
}
另一个可以控制布局的地方是_ViewStart.cshtml
.
在这里,您可以执行所需的逻辑并以编程方式指定要使用的布局。这允许您将逻辑仅放置在一个位置并将其保留在视图之外。
@{
if(myBusinessRule)
{
Layout = "~/Views/Shared/_Layout.cshtml";
}
else
{
Layout = "~/Views/Shared/_SecondaryLayout.cshtml";
}
}
Scott Gu 介绍的博客文章
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)