Asp.net 无法从内容页访问内容控件?
我的内容页如下所示:Asp.net 无法从内容页访问内容控件?,asp.net,controls,content-pages,Asp.net,Controls,Content Pages,我的内容页如下所示: <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Basket.aspx.cs" Inherits="Basket" Title="Untitled Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> <
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Basket.aspx.cs" Inherits="Basket" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>
问题是Content2
控件在编译器中不可见,并且我得到了关于缺少指令或程序集引用的错误信息
有什么解决方案吗?我建议您在内容中放置一个占位符控件,并使用它添加控件。比如说,
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Basket.aspx.cs" Inherits="Basket" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<asp:Placeholder runat="server" ID="Content1Controls" />
</asp:Content>
..
无法获取对该
asp:Content
控件的引用的原因是,当页面与母版页组合时,该控件不存在。基本上,ASP从这些ASP:Content
节中获取所有控件,并使它们成为母版页中ContentPlaceholder
控件的子控件
如上所述:运行时不会将内容控件添加到控件层次结构中。相反,内容控件中的内容直接合并到相应的ContentPlaceHolder控件中。
这意味着,如果要向该部分添加更多控件,则必须在母版页中获取对ContentPlaceholder
控件的引用,并将它们添加到母版页中。比如:
ContentPlaceHolder myContent = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
myContent.Controls.Add(??);
请注意,您使用的是
contentplaceholder-ID
值,而不是asp:Content
部分的ID
。+1关于如何解决此问题的好主意,谢谢:)但为什么内容控件本身不可访问,这让我很感兴趣。@Wodzu,这是因为内容控件没有添加到页面中。请参阅patmortech的详细回复。谢谢,我将其标记为答案。我可以理解它在运行时消失,但为什么我不能像其他控件一样在设计时访问它。如果我在WYSIWYG编辑器中看到该控件,那么我也应该能够在C#file中访问该控件。从我的观点来看,这是一个由微软提出的设计缺陷。
protected void Page_Load(object sender, EventArgs e)
{
Content1Controls.Controls.Add(...
}
ContentPlaceHolder myContent = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
myContent.Controls.Add(??);