从后面的代码访问asp:content

时间:2010-09-29 19:28:14

标签: asp.net master-pages

好的,我是一位经验丰富的网络开发人员,但有时候ASP.Net会欺骗我。 我在asp.net中有一个母版页。然后我有一个基于该母版页(home.aspx)的页面。现在在home.aspx.cs中我想访问asp:content控件以编程方式添加控件。

Aspx看起来像这样:

<asp:Content ID="leftCol" ContentPlaceHolderID="cphLeftCol" Runat="Server">
  <asp:PlaceHolder ID="phLeftCol" runat="server">
  </asp:PlaceHolder>
</asp:Content>

我希望我能从后面的代码中引用“leftCol”。但那里还不知道。 为了测试,我添加了自己的占位符“phLeftCol”。我可以毫无问题地参考。

有什么我看不到的吗?

2 个答案:

答案 0 :(得分:18)

您无法直接从您的代码中访问asp:Content控件。内容控件未在运行时添加到控件层次结构中,因此无法从后面的代码访问它以在运行时添加控件。要在运行时向其添加控件,您需要向内容控件添加另一个容器控件并将控件添加到该控件(就像使用占位符控件一样)。

有关详细信息,请参阅此MSDN文章。

答案 1 :(得分:1)

您无法从主页代码隐藏中访问“leftCol”控件,因为它是该页面内容的持有者,并且代码主页在注入时不知道他的内容...您只能访问控制该内容。内容注入从底层开始在asp.net中进行,因此主页的内容(在这种情况下是标记<asp:Content ID="leftCol" ...> and </asp:Content>之间的所有内容)就位于主页的主页...

欢呼