2013-04-27 40 views
0

我有一个父用户控件,其中我注册了一个Child UserControl。 我想要访问我从母版页继承的aspx页面中的child usercontrol中存在的控件。获取asp.net中的嵌套控件

下面是我的代码:

//Parent UserControl 
    public partial class WebUserControlParent : System.Web.UI.UserControl 
    { 
     public WebUserControlChild checkbox 
     { 
      get 
      { 
       return this.checkbox; 
      } 
     } 
     public WebUserControlChild label 
     { 
      set 
      { 
       this.label = value; 
      } 
      get 
      { 
       return this.label; 
      } 
     } 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
    } 
//Child User Control : 
    public partial class WebUserControlChild : System.Web.UI.UserControl 
    { 
     public bool Checked 
     { 
      set 
      { 
       this.checkboxchild.Checked = value; 
      } 
     } 
     public string Text 
     { 
      set 
      { 
       this.labelchild.Text = "YooHoo!"; 
      } 
     } 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
    } 
//My Aspx Page: 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      this.PageControl.checkbox.Checked = true; 
      this.PageControl.label.Text = "YoooHooo!"; 
     } 
    } 
//My Parent usercontrol .ascx stuff 
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControlParent.ascx.cs" 
    Inherits="WebApplication2.WebUserControlParent" %> 
<%@ Register Src="~/WebUserControlChild.ascx" TagName="Child" TagPrefix="cc" %> 

//My Child Usercontrol Stuff 
     <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControlChild.ascx.cs" 
     Inherits="WebApplication2.WebUserControlChild" %> 
    <asp:CheckBox ID="checkboxchild" runat="server" Checked="false" /> 
    <asp:Label ID="labelchild" runat="server"></asp:Label> 

//My ASPX Page Stuff 
    <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" 
    CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %> 

    <%@ Register Src="~/WebUserControlParent.ascx" TagName="Control" TagPrefix="cc" %> 
    <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
    </asp:Content> 
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
     <cc:Control ID="PageControl" runat="server" /> 
    </asp:Content> 

当我这样做,我的代码表示线程高兴能与一些代码...任何人都可以建议我什么我真的做错了,应该是什么这样的解决方案..谢谢

回答

0

我假设你正在输出窗口中的消息? (所以不是编译器错误或运行时错误?)

在这种情况下:这是正常的行为。每当客户端请求一个页面时,就会启动一个线程,并在页面呈现并发送回客户端时,该线程将终止产生此消息。完全不用担心。

参见:http://msdn.microsoft.com/en-us/library/bs4c1wda.aspx

0

你的父母控制代码背后会是这样

//Parent UserControl 
public partial class WebUserControlParent : System.Web.UI.UserControl 
{ 
    public WebUserControlChild mChildControl 
    { 
     get 
     { 
      return this.ctrlChild; 
     } 
     set{ 
      this.ctrlChild = value; 
     } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

子控件的代码隐藏将是

public partial class WebUserControlChild : System.Web.UI.UserControl 
{ 
    public bool Checked 
    { 
     set 
     { 
      this.checkboxchild.Checked = value; 
     } 
     get{ 
      return this.checkboxchild.Checked; 
     } 

    } 
    public string Text 
    { 
     set 
     { 
      this.labelchild.Text = value; 
     } 
     get{ 
      return this.labelchild.Text; 
     } 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

aspx页面的代码隐藏将是

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.ctrlPageControl.mChildControl.Checked = true; 
     this.ctrlPageControl.mChildControl.Text = "YoooHooo!"; 
    } 
} 

//我父母用户控件的.ascx东西

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControlParent.ascx.cs" 
    Inherits="WebApplication2.WebUserControlParent" %> 
    <%@ Register Src="~/WebUserControlChild.ascx" TagName="Child" TagPrefix="cc" %> 
    <cc:Control ID="ctrlChild" runat="server" /> 

//我的孩子用户控件的东西

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControlChild.ascx.cs" 
    Inherits="WebApplication2.WebUserControlChild" %> 
    <asp:CheckBox ID="checkboxchild" runat="server" Checked="false" /> 
    <asp:Label ID="labelchild" runat="server"></asp:Label> 

//我的ASPX页面的东西

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" 
CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %> 

    <%@ Register Src="~/WebUserControlParent.ascx" TagName="Control" TagPrefix="cc" %> 
    <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
    </asp:Content> 
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <cc:Control ID="ctrlPageControl" runat="server" /> 
    </asp:Content>