2010-12-27 17 views
3

私はDNN/SiteFinityに似た独自のWebサイト管理フレームワークを作成しようとしています。WebサイトではなくC#Webアプリケーションのユーザーコントロールを動的にロード

大きな(しかし共通の)機能の1つは、追加機能を提供するためにユーザーコントロールを動的に追加できることです。

私は、動的にコンパイルされた "ウェブサイト"よりも、あらかじめコンパイルされた.NET "Webアプリケーション"を使用することをお勧めします。何が起こる

  1. セッション(私はは、StateServerを使用していますpreume)
  2. 動的に特定に関しては、プリコンパイルされたWebアプリケーションのユーザーコントロールを追加するためにLoadControlメソッドを使用する意味は何ですか他のすべてのユーザーに - ログアウトされますか?

  3. コンパイルの変更によるアプリケーションプールのリサイクル??

私は主に "ウェブサイト"を使用していたので、事前にコンパイルされたWebアプリケーションにユーザーコントロールを動的に追加したことがわかりません。事前にコンパイルされているにもかかわらず、動的に追加されたユーザーコントロールは、必要に応じて動的にコンパイルされますか?

EDIT

私はまた、ユーザーコントロールは、アプリケーションディレクトリの外になりますので、ウェブデプロイ時に公開されることはありませんことを言及するのを忘れてしまった - 彼らは別のウェブサイトを経由してアップロードされます。

ありがとうございました! Dan。

+0

ASP.Netに組み込まれているポータルフレームワークを調べることをお勧めします。それはあなたがしようとしているものに似ているモジュラーWebサイトを作成することを可能にします。あなたのニーズに合っているかどうかを調べることで価値があるかもしれません。そのため、あなたは車輪を再構築する必要はありません。また、パーソナライズも可能で、異なるユーザーがWebサイトのビューをカスタマイズすることができます。 –

+0

あなたのフィードバックは本当に問題に対処していません。私は実際にMSがHTMLエディタを動的に読み込むことで完全な魅力的なドラッグアンドドロップでポータルで行うことをjqueryで構築しました。 –

答えて

0
  1. ない問題はありません

  • セッションに私の唯一の提案は、あなたが読んで:

    http://weblogs.asp.net/infinitiesloop/archive/2006/08/25/TRULY-Understanding-Dynamic-Controls-_2800_Part-1_2900_.aspx

    http://weblogs.asp.net/infinitiesloop/archive/2006/08/30/TRULY-Understanding-Dynamic-Controls-_2800_Part-2_2900_.aspx

    http://weblogs.asp.net/infinitiesloop/archive/2006/08/30/TRULY-Understanding-Dynamic-Controls-_2800_Part-3_2900_.aspx

    http://weblogs.asp.net/infinitiesloop/archive/2006/10/16/TRULY-Understanding-Dynamic-Controls-_2800_Part-4_2900_.aspx

    あなたが現在動的にコントロールを追加するにはあなたの能力を変更しない「ウェブサイト」のではなく、Webアプリケーションを使用しているという事実。それは何も問題を作成して以来、MSは単にWebサイトを完全に削除した場合、それはむしろ有益だろう。それは別の日のために別の議論tho。

    +0

    スーパー記事 - 私は、ユーザーコントロールをコンパイル済みのWebアプリケーションに動的に読み込むという問題に対処していないと思います。 –

    +0

    私は過去のokのユーザーコントロールを "ウェブサイト"に動的に読み込んでいるので、私はそれをやり遂げるのが大変だと言わざるを得ない。私は、特定のタイプのデプロイメントで適切に行う方法にもっと関心を持っています。 –

    +0

    これらは、コントロールの読み込み方法を理解するのに役立ちます。あなたが計算機のようなユーザーコントロールを持っていて、それを動的にロードした場合、イベントはそれらのコントロールで魔法のように発生するだけではありません。これらの記事を読んだら、30の質問のためにスタックオーバーフローに戻らずに、理由とその方法を理解するでしょう。動的に読み込んだコントロールのすべての問題に遭遇したときに質問する必要があります。 – Phill

    1

    プリコンパイルされたWebサイトにユーザーコントロールを動的に追加することができます。

    ページ上のすべてのコントロールがClientIDと呼ばれる固有のIDを持っています

    は、私は、ユーザーコントロールのライフサイクルについての説明を与えます。 (これは各コントロールの実際のプロパティです。)ユーザコントロールは「命名コンテナ」です。つまり、それに含まれる各コントロールには、UserコントロールのIDも含まれます。たとえば、ID「UserControl1」のUserContro lの「TextBox1」のクライアントIDは UserControl1_TextBox1です。

    ポストバックは、各フィールドの値をClientIDで取得します。たとえば、フォームから上記のTextBox's値を取得するには、Request.Forms["UserControl1_TextBox1"]を使用します。 UserControlの代わりに同じClientIDを使用すると、どうなりますか? 2番目は最初のデータを取得します。

    推奨事項:

    1. 常にそのIDプロパティでUserControlに固有のIDを割り当てます。

    2. ブラウザに送信したページのコントロールをpostbackに再作成してから並べ替える必要があります。これにより、元のコントロールの はデータを読み込んでイベントハンドラを実行できます。 また、ViewStateは、 の内容を適切に配信することができ、ViewStateのエラーが発生しません。

    3. Post_Backでは、LoadControlを呼び出して、元の番号 UserControlを取得することをおすすめします。次に、2番目をロードする前に、最初のVisible プロパティをfalseに設定してそれを削除します。
    +0

    コンパイル済みのサイトに追加する前にユーザーコントロールを事前にコンパイルする必要がありますか?ユーザーコントロールはWebアプリケーションディレクトリ外にあります。 –

    +0

    コンパイルする必要はありません – ImadArif

    関連する問題