1

在 Page1 和 Page3 的 MasterPage.OnLoad 事件中,我得到 TitleContent.Controls.Count>0,但对于 Page2(只要我有没有 runat=server 的服务器标签),控制计数为零。为什么会这样以及如何检查 Page2 中的内容(假设我无法控制 Page2,因此添加 runat=server 没有帮助)。

我想稍后在管道中移动它,但在 MasterPage 和 ContentPlaceHolder 控件的预渲染阶段,控制计数仍然为零。

(VS2010 ASP.NET Web 窗体 .Net 4.0)

MasterPage.aspx:

<asp:ContentPlaceHolder ID="TitleContent" runat="server"/>

第1页.aspx:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="TitleContent">
    <h1>Heading Text</h1>
</asp:Content>

页面2.aspx:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="TitleContent">
    <h1><%= HeadingTextFromCode %></h1>
</asp:Content>

Page3.aspx:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="TitleContent">
    <h1 runat="server"><%= HeadingTextFromCode %></h1>
</asp:Content>

旁白: 我真正想问的是“我如何判断 ContentPlaceHolder 是否为空”,唯一可靠的方法是将内容呈现为字符串并按照 defrost 此处的建议检查是否为空:

如何检查 ContentPlaceHolder 是否为空?

该解决方案适用于我的所有三个场景,但渲染到字符串只是为了查看它是否为空似乎很尴尬和重复。

4

0 回答 0