2012-01-10 8 views
1

マスターページに動的に異なるユーザーコントロールが含まれています。masterpage内のdivにusercontrolをプログラムでロードする

マスターページを継承しているページの一部のみが、ユーザーコントロールの一部を表示する必要があります。これらのユーザーコントロールを表示するための最良のオプションは何かを知る必要があります。どのユーザーコントロールを読み込み、コードを使用してプログラムで実行するかを決定できますか?または、これを行うにはjavascriptまたはjqueryの方法がありますか?

私はコンテンツページからmasterページのdivにプログラマチックにユーザーコントロールを読み込む方法を知りたいと思っていました。

+1

ほんの少しのサンプルコードは素晴らしいので、これまでに試したことと正確に達成したいことを人々が見ることができます:) – bardiir

答えて

2

。詳細な説明については、this MSDN articleを参照してください。

var userControl = (TheTypeOfMyUserControl)LoadControl("~/MyUserControl.ascx"); 
var div = TheNameOfMyRunAtServerDiv; 
div.Controls.Add(userControl); 

編集:上記マスターページに配置する必要があります。コンテンツページから呼び出す場合は、ページが呼び出すことができるMasterPage上にパブリックメソッドを作成できます(ユーザーコントロールパスをパラメータとして使用できます)。

+0

マスターページから "TheNameOfMyRunAtServerDiv"を取得するには、自分の子ページに<%@ MasterType VirtualPath = "〜/ MastPageName.master"%>を追加するか、((MasterPageName)This.Master).TheNameOfMyRunAtServerDivを自分のページとして使用する必要がありますそれ以外の場合は、マスターページのコントロールに直接アクセスすることはありません –

+0

True。 UserControlをロードするためのMasterPage内にメソッドを作成し、それをユーザーコントロールパスをパラメータとして持つページから呼び出すことができます。具体的なシナリオを知らなくても「最良の」方法を伝えるのは難しいです。 – PHeiberg

1

次のコードは、あなたのために働くだろう

UserControl uc = (UserControl)LoadControl("controlPath"); 
div.Controls.Add(uc); 

参照:あなたは(例えばページ、ユーザーコントロールやマスターページなど)すべてTemplateControlベースのクラスでLoadControl method利用できるを使用してユーザーコントロールを動的にロードすることができhttp://msdn.microsoft.com/en-us/library/c0az2h86(v=VS.90).aspx

+0

ユーザーコントロールにテンプレート(ascx)ユーザーコントロールを持つことの主なポイントの1つ。コントロールは、LoadControlメソッドを使用してロードする必要があります。 – PHeiberg

+0

@PHeiberg:コメントありがとう。答えを更新しました。 –

関連する問題