Asp.net 访问asp:代码隐藏中的内容

Asp.net 访问asp:代码隐藏中的内容,asp.net,master-pages,Asp.net,Master Pages,好的,我是一个经验丰富的web开发人员,但有时ASP.Net会欺骗我。 我在asp.net中有一个母版页。然后我有一个基于母版页的页面(home.aspx)。现在在home.aspx.cs中,我想访问asp:content控件,以编程方式添加控件 Aspx如下所示: <asp:Content ID="leftCol" ContentPlaceHolderID="cphLeftCol" Runat="Server"> <asp:PlaceHolder ID="phLeftCo

好的,我是一个经验丰富的web开发人员,但有时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”。但这是未知的。 为了进行测试,我添加了自己的占位符“freeftcol”。我可以毫无疑问地引用它


有什么我看不到的吗?

您不能直接从代码中访问asp:Content控件。运行时未将内容控件添加到控件继承人权限,因此无法从代码中访问该控件以在运行时将控件添加到。要在运行时向其添加控件,需要向内容控件添加另一个容器控件,并将控件添加到该控件中(与占位符控件一样)

有关详细信息,请参阅本文。

您无法从主页代码隐藏中访问“leftCol”控件,因为它是该页面内容的持有者,而代码您的主页在插入时不知道他的内容。。。您只能访问该内容中的控件。内容注入自下而上进入asp.net,所以主页的内容,在本例中,标签
之间的所有内容,都进入母版页的占位符中


干杯

还有其他容器控件可能比占位符控件更适合您的情况(确实需要了解更多您正在做什么),但内容控件不是一个选项。请考虑每个内容占位符(母版页上)和每个匹配的内容(内容页)对象只是作为链接的相对端点,告诉母版/内容呈现系统母版页中嵌入的位置和内容。母版页上的每个ContentPlaceHolder只是指示在内容页中每个相应内容对象中定义的内容的嵌入位置。由于这些对象仅用作有关嵌入位置/内容的链接,因此它们类似于主控/内容呈现系统的元对象,因此它们从来都不是控件层次结构的一部分。如果它对任何人都有帮助,则您可以在母版页代码中访问它。