2010-12-10 2 views
0

私は後で他のプロジェクトでこれらのコンポーネントを使用できるように、コンポーネントコレクションプロジェクトを構築するのが好きです。 IPGostarの名前空間の下に - - >IPGostarProject - コンポーネントが含まれており、 多くのユーザーコントロールのプログラムで別のプロジェクトからUserControlをロードする

:たとえば、私は、ユーザーコントロールは、だから、プロジェクトのレイアウトはすべて、このような何かあるとしMyDataGrid.ascx

と呼ば作成しました

- >SampleProject - ここでは、MyDataGrid.ascx UserControlを IPGostar名前空間から使用します。

しかし、あなたが知っているように、LoadControl関数は仮想ディレクトリだけをパラメータとして受け取ります。したがって、SampleProjectディレクトリの外には何もロードできません!

どうすればいいですか?

答えて

0

実際のユーザーコントロールをSampleProjectのサブフォルダにコピーして実行時にアクセスできるように、SampleProjectプロジェクトのビルド後イベント(または使用しているビルドスクリプト)が1つあります。

0

部分的なクラスを扱っている限り、ファイルシステムのトリッキー外でこれを行う素晴らしい方法はありません。より良い方法は、WebControlsとして共有UserControlsを実装することです。大規模なマークアップを使用している場合は、とにかく共有コントロールには適していない可能性があります。あなたはスタイルシートを共有しますか?

コントロールのコア機能の一部ではないマークアップの大部分を分離し、WebControlとしてコアのみを実装し、コード内にマークアップとコントロールを生成します。それを実装する実際のプロジェクトは、レイアウト、フォーマットなどを担当する必要があります。イベントを使用してクライアントにフックを提供します(たとえば、データグリッド、CreateRow、CreateCellなどのイベント)