asp.net-mvc – 如何覆盖视图布局声明
发布时间:2020-12-16 07:19:27 所属栏目:asp.Net 来源:网络整理
导读:在asp.net MVC 3中是否有一种方法可以在控制器或动作过滤器的视图中覆盖布局声明集? @{ Layout = "~/Views/Shared/_Layout.cshtml";} 我已经尝试覆盖OnResultExecuted或OnResultExecuting中的MasterName属性,如下面的代码片段,但无济于事. public override
在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; } 解决方法
您可以创建一个操作过滤器来覆盖布局文件,但是如果要删除它,则必须创建一个空的布局文件,而不是将Master属性指定为null.像这样:
public class OverrideLayoutFilter : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { var view = filterContext.Result as ViewResult; view.MasterName = "_LayoutEmpty"; base.OnResultExecuting(filterContext); } } 控制器: public class HomeController : Controller { [OverrideLayoutFilter] public ActionResult Index() { return View(); } } 现在你的新布局文件需要放在SharedFolder中,你只需要放置RenderBody函数 _LayoutEmpty.cshtml @RenderBody() 注意:如果您在视图中定义了要覆盖布局的部分,则还必须使用空内容定义这些部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – “<%:”做什么?
- asp.net-mvc – 在ASP.NET MVC中实现工作单元的方法
- asp.net-mvc – 控制器和操作方法之间丢失的会话变量
- asp.net – .Net System.Mail.Message添加多个“To”地址
- asp.net-mvc – 如何将NUnit作为ASP.NET MVC的测试框架选项
- asp.net-core-mvc – MVC 6配置验证
- asp.net-mvc – 在请求之间保持/缓存数据 – 常用方法
- ASP.NET应用程序重新启动太多
- 为asp.net电子商务项目选择云
- asp.net-mvc – 如何使用Asp.net MVC验证列表属性是否具有最
推荐文章
站长推荐
热点阅读