asp.net – asp:ContentPlaceHolder和代码块问题
|
当内容占位符包含任何代码块时,它会报告控件集合为空. 例如: MasterPage.aspx <asp:ContentPlaceHolder ID="Content1" runat="server" /> <asp:ContentPlaceHolder ID="Content2" runat="server" /> <div>Content1: <%= Content1.Controls.Count %></div> <div>Content2: <%= Content2.Controls.Count %></div> APage.aspx <asp:Content ContentPlaceHolderID="Content1" runat="server">
Plain text content.
</asp:Content>
<asp:Content ContentPlaceHolderID="Content2" runat="server">
<%= "Code block content." %>
</asp:Content>
这将呈现以下内容:
为什么母版页的ContentPlaceHolder.Controls集合为空? 我想检查是否已填充ContentPlaceHolder(另请参阅this question),但如果它包含任何<%= blocks则不能. 有没有人知道这方面的方法? 解决方法按照承诺,我说我会看看.对不起我昨晚没有上传,漫长的一天,需要打干草!所以,我正在检查ContentPlaceHolder.Controls集合的填充方式之间的差异.我注意到,当使用代码块时,它会翻转为只读.在任何其他方面,它将只是空或填充. 因此,我决定使用扩展方法为我们检查它: ContentPlaceHolderExtensions.cs public static class ContentPlaceHolderExtensions
{
public static bool ContainsControlsOrCodeBlock(this ContentPlaceHolder placeHolder)
{
if (placeHolder.Controls.Count > 0)
return true;
return placeHolder.Controls.IsReadOnly;
}
}
然后在母版页中检查: 的Site.Master <asp:ContentPlaceHolder ID="Content1" runat="server" /> <asp:ContentPlaceHolder ID="Content2" runat="server" /> <asp:ContentPlaceHolder ID="Content3" runat="server" /> <div>Content1: <%= Content1.Controls.Count %></div> <div>Content2: <%= Content2.Controls.Count %></div> <div>Content3: <%= Content3.Controls.Count %></div> <div>Content1 (Ex. Meth.): <%= Content1.ContainsControlsOrCodeBlock() %></div> <div>Content2 (Ex. Meth.): <%= Content2.ContainsControlsOrCodeBlock() %></div> <div>Content3 (Ex. Meth.): <%= Content3.ContainsControlsOrCodeBlock() %></div> 作为概念验证,我添加了一个内容页面: 的Index.aspx <asp:Content ContentPlaceHolderID="Content1" runat="server"> Plain Text Content </asp:Content> <asp:Content ContentPlaceHolderID="Content2" runat="server"> <%= "Code block content" %> </asp:Content> 并且所有都按预期呈现(我相信).. TBH,虽然它并不完美..我不认为在这种情况下我们可以变得更加优雅.我不确定在这些不同的场景中如何设置其他控件集合,因此我只使用了ContentPlaceHolder控件.其他模板控件可能也可能不一样. 思考? 您可以从here下载该项目: http://code.google.com/p/robcthegeek/source/browse/#svn/trunk/stackoverflow/964724 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用嵌套显示模板时如何防止Razor向输入添加
- asp.net-mvc – Visual Studio 2013持有的App_global.asax.
- ASP MVC Razor在输入占位符中编码特殊字符
- asp.net – 防止VB.NET中的属性序列化
- asp.net – 如何在MVC 5中为OwinContext设置TimeOut
- asp.net-mvc – 将部分视图渲染为字符串MVC4
- asp.net-mvc – 为什么IIS没有清理池回收导致网站内存异常的
- kendo-ui – 剑道网格刷新(数据绑定两次)
- WCF WebServiceHostFactory MaxReceivedMessageSize配置
- ASP.NET C#ListBox服务器控件不会禁用
- asp.net – 多个Application_Start事件触发
- asp.net-mvc – MVC4:禁用某些控制器上的移动视
- asp.net – 如何使用JwtSecurityTokenHandler和J
- asp.net – 从JavaScript读取web.config
- .net – ListView中Bind语句中的格式化日期
- asp.net – 使用Razor的Html.EditFor限制文本框中
- ASP.NET MVC3 HttpStatusCodeResult StatusDescr
- asp.net-mvc – RavenDB部署问题
- 是否有比ASP.NET成员资格提供程序更现代的会员/安
- asp.net-mvc – NLog在所有aspnet布局渲染器上抛
