有没有办法获取主页面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”)。
任何人都可以建议。
提前致谢
答案 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;