0

.NET 2.0 でクラスをユーザー コントロールのクラス ファクトリとして使用する方法はありますか? 言い換えれば、1 つのスーパーがそこにあり、ユーザー コントロールが必要なときに、それを作成して返します。参照できないように見えるASP名前空間が必要なようです。

プレースホルダー付きのマスターページがあります。ユーザーの認証に応じて、ユーザー コントロールを動的に読み込みます。たとえば、認証されている場合は検索コントロールである可能性があり、ログインしていない場合は広告である可能性があります。それらを動的にロードできます。しかし、私の計画は、これを制御するために単一のクラスを使用することでした。現在、マスターページのコードビハインドにそれらをロードする必要があります。ユーザー コントロールを参照できないため、クラスに表示するコードはありません。

4

3 に答える 3

1

ユーザー コントロールは、ページ コンテンツの単純なチャンクであることを意図しています。彼らは派手であることを意図していません。ユーザーコントロールでこれを行うと、やる価値があるよりも多くの問題が発生する場合があります。

于 2009-06-23T15:54:38.257 に答える
0

コントロールを動的に作成することはできます (私は主に Sharepoint サイトで作成し、ページで CreateChildControls をオーバーロードすることもありました) が、これによって得られるのは、ページ ライフサイクルの頭痛の種の山です。

最良の解決策は、別々のページを使用し (レイアウトにマスターを使用)、さらに URL のトリミングを行うことです。

\search が web.config で認証されたユーザーに制限されるようにします。したがって、洗い流されていない大衆が検索しようとすると、\Login (広告を含む) にリダイレクトされます。

于 2009-06-23T17:01:22.093 に答える
0

いくつかのこと、多分何かが役に立ちます:) ...

  1. LoginView Classを探していると思います。認証ステータスまたはロールに基づいて、個別のコントロールまたは任意の html が表示されます。すでに知っていることを言っている場合は申し訳ありません。

  2. あなたが私に説明しているように思われるLoginView機能を置き換えるには、サーバーコントロールの方がはるかに適切です。具体的には、複合サーバー コントロールです。

  3. 動的にロードする機能は、ASP.Net AJAX をミックスに追加することで実行できます。たとえば、複合コントロールは ASP.Net AJAX UpdatePanel に基づくことができます。サーバー コントロールをScriptControl基本クラスに基づいて作成することもできます。

  4. AJAX を使用して動的に読み込むことができる場合でも、既に行われているものを使用することをお勧めします。つまり、Web パーツ サーバー コントロールを構築します。

于 2009-06-23T17:54:00.547 に答える