获取在MasterPage ContentPlaceHolder中加载的内容ID

时间:2011-08-13 05:49:04

标签: .net asp.net

有没有办法获取主页面PlaceHolder中加载的Content元素的元素ID?

对于EX: 我的主页,

<form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

        </asp:ContentPlaceHolder>
    </div>
    </form>

以下是使用母版页的其他页面:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
I am the child page
<asp:Label ID="lbl" runat="server"></asp:Label>
</asp:Content>

如何在Master PageLoad中获取Content ID(“Content2”)。

任何人都可以建议。

提前致谢

3 个答案:

答案 0 :(得分:2)

如果您覆盖了MasterPage,则可以访问受保护的ContentPlaceHolders集合:

public class YourMasterPage : MasterPage
{
    // in Page_Load try out
    foreach(var placeHolder in this.ContentPlaceHolders)
    {
        var contentPlaceHolder = placeHolder as ContentPlaceHolder;
        if(contentPlaceHolder != null)
        {
            Debug.WriteLine("ID: " + contentPlaceHolder.ID);
            Debug.WriteLine("Client Id" + contentPlaceHolder.ClientID);
        }
    }
}

答案 1 :(得分:1)

你可以得到......

((ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1")).ClientID

答案 2 :(得分:1)

你想做什么是不可能的。 asp:Content控件实际上不是页面控件层次结构的一部分,正如this MSDN page中所述:

  

在运行时,内容控件未添加到控件层次结构中。   而是直接合并Content控件中的内容   进入相应的ContentPlaceHolder控件。

这就是为什么我询问你的最终目标是访问该部分中的控件。如果是,您可以通过ContentPlaceHolder控件访问它们,因为在运行时,“内容”部分中的所有控件都在其中。您可以在您的母版页中执行此操作:

Label lbl = ContentPlaceHolder1.FindControl("lbl") As Label;