Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法从内容页访问内容控件?_Asp.net_Controls_Content Pages - Fatal编程技术网

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(??);