2010-12-23 8 views
2

私のページにはページと呼び出しメソッドがあります。私は、そのメソッドの中で自分のページコントロール(ページ自体ではない)にコントロールを追加したいと思います。ページにUserControlを追加する別のクラスから

私の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> 

とコードの後ろに:

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ありがとうございます。

答えて

4

私は私の以前の回答について申し訳ありません、あなたに動作していない..私はちょうど私の記憶からそれを書いた...ここでは実用的なソリューションです...あなたが最初に見つける必要がありますあなたのプレースホルダを見つける前に、コンテンツプレースホルダ...

注:...コンテンツタグの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()); 
      } 
     } 
    } 
} 

をContentPlaceHolderIDを使用しないでください私の古いの改訂履歴を参照してください答えるers ...

+0

私はそれを試してください!しかし、phはnullです... – Raika

+0

コントロールの名前が正しく "PlaceHolder1"であることを確認してください...呼び出しページで利用可能なコントロールです... –

+0

はい、私は2回チェックします。 .site_master – Raika

関連する問題