将UserControl添加到另一个类的页面

时间:2010-12-23 12:58:09

标签: c# asp.net

我的页面内有页面和调用方法。我想在该方法中为我的页面Control(不是页面本身)添加一些控件。

我的Default.aspx:

<%@ Page Title="Home Page" MasterPageFile="~/Site.master"  ...  %>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</asp:Content>

和Code Behind:

namespace Program
{
    public partail class Default : Page
    {
         protected void Page_Load(object sender, Eventargs e)
         {
              MyClass.Calling(this); 
         }
    }
}

我的另一个班级

namespace Program
{
    public class MyClass
    {
         public static void Calling(Page page)
         {
              Textbox txt = new Textbox()
              // I want somthing like this:
              // page.PlaceHolder1.Controls.Add(txt);
         }
    }
}

这可能吗?

更新:感谢@The King。

2 个答案:

答案 0 :(得分:4)

我很抱歉我之前的回答没有给你工作..我只是从我的记忆中写下来......这是一个有效的解决方案......你首先需要在找到你的占位符之前找到内容占位符。 ..

注意:请使用ContentPlaceHolderID,而不是内容标记的ID ...

namespace Program  
{  
    public class MyClass  
    {  
         public static void Calling(Page page)  
         {  
            ContentPlaceHolder cph = page.Master.FindControl("ContentPlaceHolder1") as ContentPlaceHolder;
            if (cph == null)
            {
                  return;
            }

            PlaceHolder ph = cph.FindControl("PlaceHolder1") as PlaceHolder;
            if (ph != null)
            {
                ph.Controls.Add(new TextBox());
            }
         }  
    }  
}  

请参阅我的旧答案的修订历史......

答案 1 :(得分:0)