3

DNN/SiteFinity に似た独自の Web サイト管理フレームワークを作成しようとしています (ムーチョ カット ダウン バージョンのみ)。

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

動的にコンパイルされた「Web サイト」よりも、プリコンパイルされた .NET「Web アプリケーション」を使用したいと思います。

LoadControl メソッドを使用して、事前にコンパイルされた Web アプリケーションのユーザー コントロールを動的に追加することの意味は次のとおりです。

  1. セッション(状態サーバーを使用していると思われます)
  2. 他のすべてのユーザーはどうなりますか? ログアウトされますか?
  3. 一部のコンパイルの変更によるアプリケーション プールのリサイクル??

私は主に「Web サイト」を使用しているため、事前にコンパイルされた Web アプリケーションにユーザー コントロールを動的に追加したことがあるかどうかはわかりません。サイトが事前にコンパイルされていても、動的に追加されたユーザー コントロールが必要に応じて動的にコンパイルされることを意味しますか?

編集

また、ユーザー コントロールはアプリケーション ディレクトリの外にあるため、Web デプロイ中には公開されないことも忘れていました。それらは別の Web サイト経由でアップロードされます。

ありがとう!ダン。

4

2 に答える 2

1

事前にコンパイルされた Web サイトでユーザー コントロールを動的に追加できます。

ユーザーコントロールのライフサイクルについて説明します。

ページ上のすべてのコントロールには、ClientID. (これは各コントロールの実際のプロパティです。) ユーザー コントロールは「名前付けコンテナー」です。つまり、含まれる各コントロールには、ユーザー コントロールの ID も含まれます。たとえばUserContro、ID が「UserControl1」の l の「TextBox1」には clientID: が含まれます UserControl1_TextBox1

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

推奨事項:

  1. UserControlプロパティ内の には常に一意の ID を割り当てIDます。

  2. 再配置する前に、ブラウザーに送信したページのコントロールを常に再作成する必要がありますpostback。これにより、元のコントロールがデータを読み込んでイベント ハンドラーを実行できるようになります。また、破損エラーが発生ViewStateすることなく、コンテンツを適切に配布することもできます。ViewState

  3. そのため、Post_Back では、電話LoadControlして元の UserControl. 次に、2 番目をロードする前に、最初の Visible プロパティを false に設定して削除します。
于 2010-12-28T07:33:03.293 に答える
0
  1. セッション上は問題ありません
  2. いいえ
  3. いいえ

私の唯一の提案は、あなたが読むことです:

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 アプリケーションではなく「Web サイト」を使用しているという事実は、コントロールを動的に追加する機能を変更しません。問題が発生するだけなので、MS が「Web サイト」を完全に削除した場合は、むしろ有益です。それは別の日の別の議論です.

于 2010-12-27T22:34:06.637 に答える