asp.net – 访问母版页中的祖父母内容占位符
发布时间:2020-12-16 04:04:34 所属栏目:asp.Net 来源:网络整理
导读:我一直在网上搜索并没有找到任何答案(关于堆栈溢出有几个接近的问题,但它们似乎没有得到答案或相同),所以我想我会构成我自己的一个.它围绕嵌套母版页和访问祖父母大师的Content PlaceHolder的内容页面展开,即使它没有在父嵌套母版中重新公开.我想知道这是不
我一直在网上搜索并没有找到任何答案(关于堆栈溢出有几个接近的问题,但它们似乎没有得到答案或相同),所以我想我会构成我自己的一个.它围绕嵌套母版页和访问祖父母大师的Content PlaceHolder的内容页面展开,即使它没有在父嵌套母版中重新公开.我想知道这是不可能的.
Core Site.Master <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title> <asp:ContentPlaceHolder ID="TitleContent" runat="server"> <%= Html.GlobalModel().PageTitle %> </asp:ContentPlaceHolder> </title> <asp:ContentPlaceHolder ID="HeadContent" runat="server"> <link rel="shortcut icon" href="<%= ViewContext.ClientContent( "Content/Tiki.ico" ) %>" type="image/x-icon"/> </asp:ContentPlaceHolder> </head> <body> <asp:ContentPlaceHolder ID="SiteContent" runat="server"/> </body> </html> 嵌套的Site.Master(请注意TitleContent和HeadContent是如何自定义的,因此来自Core Site.Master的’默认’内容应该生效) <%@ Master Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewMasterPage" %> <asp:Content ContentPlaceHolderID="SiteContent" runat="server"> <asp:ContentPlaceHolder ID="SiteContent" runat="server"> <h1>Nested Header</h1> <asp:ContentPlaceHolder ID="NestedContent" runat="server"/> </asp:ContentPlaceHolder> </asp:ContentPlaceHolder> ContentView.aspx(引用嵌套的Site.Master,尝试的TitleContent替换将无效.) <%@ Page Language="C#" MasterPageFile="Site.Master" %> <asp:Content ContentPlaceHolderID="NestedContent" runat="server"> <p>Nested content. This will work.</p> </asp:Content> <asp:Content ContentPlaceHolderID="TitleContent" runat="server"> Nested Title. This will **not** work. </asp:Content> 解决方法
ContentPlaceHolderIDs只能在声明性地列出时引用它们的直接父级.
最简单的解决方案,虽然不是最优雅的,但是将ContentPlaceHolders复制到具有相同默认代码的嵌套Site.Master.需要一些代码重复,但完成工作. <%@ Master Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewMasterPage" %> <asp:Content ContentPlaceHolderID="TitleContent" runat="server"> <asp:ContentPlaceHolder ID="NestedTitleContent" runat="server"> <%= Html.GlobalModel().PageTitle %> </asp:ContentPlaceHolder> </asp:ContentPlaceHolder> <asp:Content ContentPlaceHolderID="SiteContent" runat="server"> <asp:ContentPlaceHolder ID="SiteContent" runat="server"> <h1>Nested Header</h1> <asp:ContentPlaceHolder ID="NestedContent" runat="server"/> </asp:ContentPlaceHolder> </asp:ContentPlaceHolder> 如果您不想这样做,可以使用知道何时显示内容的自定义控件替换占位符. 或者如果你需要保持这种方式,你可以运行一堆代码来强制早期渲染到内存中的字符串/缓冲区并用它替换子控件 – 但这会很麻烦,而且它是否值得怀疑值得努力. 但任何这些解决方案都取决于您的情况.如果您提供了更多背景信息,我们可以提供更具体的建议. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – 不明显的客户端验证规则中的验证类型名称
- 用户控件在asp.net和Performance中
- asp.net – 如何在转发器中每行显示x个项目?
- 调试w /附加到进程启动ASP.NET开发服务器
- asp.net-mvc – 将依赖项注入自定义ModelBinder
- asp.net-mvc – 为什么在Asp.net MVC 2中的子操作中不允许重
- 在asp.net identity 2.0中获取分配角色的用户列表
- asp.net-mvc – 如何使用actionresult返回视图和部分视图
- [ASP.NET] iTextSharp产生PDF档...Part_1(把GridView变成PD
- asp.net – Web窗体用户控件加载时的空字段
推荐文章
站长推荐
- 在同一IIS上的ASP.NET应用程序之间共享信息
- asp.net – 未指定SMTP主机
- asp.net-mvc-3 – 不能将lambda表达式转换为’st
- asp.net – UpdateProgress不适用于触发器属性内
- asp.net – 如何在runat =“server”表单元素中包
- 如何设置特定于ASP.NET请求的log4net上下文属性?
- asp.net-mvc-3 – ASP.NET MVC ActionFilter –
- asp.net-mvc – 带有存储库和ninject的ASP.NET M
- asp.net-mvc – 构建与数据格式分离的ASP.NET MV
- asp.net-mvc-4 – 如何解决Antlr3依赖地狱
热点阅读