gpt4 book ai didi

asp.net - 问题与 asp :ContentPlaceHolder and code blocks

转载 作者:行者123 更新时间:2023-12-04 10:32:56 25 4
gpt4 key购买 nike

当内容占位符包含任何代码块时,它会报告控件集合为空。
例如:
母版页.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>
页面.aspx
<asp:Content ContentPlaceHolderID="Content1" runat="server">
Plain text content.
</asp:Content>

<asp:Content ContentPlaceHolderID="Content2" runat="server">
<%= "Code block content." %>
</asp:Content>
这将呈现以下内容:

Plain text content. Code block content.

Content1: 1

Content2: 0


为什么母版页的 ContentPlaceHolder.Controls 集合为空?
我想检查 ContentPlaceHolder 是否已被填充(另见 this question )但如果它包含任何 <%= 则不能 block 。
有谁知道解决这个问题的方法?

最佳答案

正如 promise 的那样,我说我会去看看。对不起,我昨晚没有上传,漫长的一天,需要干草!
所以,我正在查看 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>
作为概念验证,我随后添加了一个内容页面:
索引.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 - 问题与 asp :ContentPlaceHolder and code blocks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com