从后面的代码访问asp:content

new*_*git 11 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>
Run Code Online (Sandbox Code Playgroud)

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

有没有我看不到的东西?

ben*_* f. 18

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

有关更多信息,请参阅此MSDN文章.

  • 将每个ContentPlaceHolder(在母版页上)和每个匹配的内容(内容页面)对象简单地视为链接的相对端点,告知主/内容呈现系统在母版页中嵌入的位置和内容.母版页上的每个ContentPlaceHolder只是指示在内容页面中嵌入每个相应Content对象中定义的内容的位置.由于这些对象仅用作关于嵌入位置/内容的链接,因此它们就像主/内容渲染系统的元对象,因此它们永远不是控件层次结构的一部分. (2认同)