8

誰かがこれらのそれぞれをいつ使用するかを説明できますか? 多くの場合、それらはほとんど交換可能に見えます。

カスタム コントロールはツールバーに追加されますが、ユーザー コントロール (ascx) は追加できません。カスタム コントロールはデザイナーでレンダリングされませんが、ユーザー コントロールはレンダリングされます。それ以上に、どれを使用するのに適したものをどのように選択しますか?

また、JavaScript (GetElementById) からコントロールにアクセスする最良の方法を探しています。したがって、クライアント側のサポートを追加するための正しい方向へのポイントは素晴らしいでしょう.

4

8 に答える 8

10

これはマイクロソフトのサイトからのものです:

Web ユーザー コントロール

  • 作成が簡単
  • ビジュアル デザイン ツールを使用する消費者に対する限定的なサポート
  • アプリケーションごとに個別のコントロールのコピーが必要です
  • Visual Studio のツールボックスに追加できません
  • 静的レイアウトに適しています

Web カスタム コントロール

  • 作成が難しくなる
  • 消費者向けの完全なビジュアル デザイン ツールのサポート
  • グローバル アセンブリ キャッシュで、必要なコントロールのコピーは 1 つだけです。
  • Visual Studio のツールボックスに追加可能
  • 動的レイアウトに適しています

http://msdn.microsoft.com/en-us/library/aa651710(VS.71).aspx

于 2008-09-22T17:06:29.713 に答える
2

UserControl は、Web サイトによってホストされる必要があり、分離コード モデルを使用して ASCX ファイルに関連付けられます。したがって、ユーザー コントロールを使用すると、コントロールの基本的なマークアップを ASCX ファイルで定義し、すべてのコードを ASCX.CS ファイルに入れることができます。

WebControl は単なるクラスであり、関連する ASCX ファイルを定義することはできません。コントロールが生成するマークアップを出力するには、Render 関数をオーバーライドする必要があります。ただし、ASCX に依存しないため、共有ライブラリに入れることができます。(DLL)

あなたの質問に答えるには: Web コントロールと UserControls の両方に同じ利点があります。ページの一部を取り、それをカプセル化します。問題のコードが私のサイトの 1 つだけに適用される場合は、UserControls を使用します。複数のサイトで同様のコードを使用している場合は、コードを WebControl に変換して共有ライブラリに移動します。そうすれば、更新する必要があるときに、3 か所や 4 か所ではなく 1 か所で変更を加えることができます。

ヒント: 標準の ASP WebControls の 1 つから継承することにより、独自の WebControl を定義する際の問題の一部を回避できます。Label や Image などの多くの標準コントロールはシールされていません。それらを継承してメソッドをオーバーライドし、そのコントロールの独自の特殊バージョンを作成できます。これは、WebControl を直接拡張するよりもはるかに簡単で、エラーが発生しにくくなります。

于 2008-09-22T17:09:14.230 に答える
1

ユーザーコントロールはプロジェクトでコンパイルされ、プロジェクトと同じ言語で作成する必要があります。

カスタムコントロールをキャンバスにドロップして、プログラマーがすべての内部を知らなくてもプロパティを設定することで構成できます(良い場合も悪い場合もあります)。また、カスタムコントロールはdllでプリコンパイルされているため、プロジェクトと同じ言語で記述する必要はありません。

詳細に注意を払うと、カスタムコントロールを記述して、デザイナーに表示することができます(ただし、これは問題の価値がない場合があります)。

于 2008-09-22T20:02:50.693 に答える
1

あなたが考えているのは、カスタム コントロールとユーザー コントロールで、どちらも Web コントロールです。ユーザー コントロールにはデザイナー UI がありませんが、カスタム コントロールにはあります。

通常、ユーザー コントロールを使用して、UI を個別の機能領域に分割します。ただし、複数のソリューションで使用したい機能を作成する場合は、通常、それらをカスタム コントロールとして作成します。

ツールボックスに追加できるのは、カスタム コントロールのみです。

以下はマイクロソフトからの抜粋です。

http://msdn.microsoft.com/en-us/library/aa651710(VS.71).aspx

于 2008-09-22T17:08:53.047 に答える
0

ユーザーコントロール

  • マークアップ部分に他のコントロールを視覚的にドラッグアンドドロップできるため、実装が簡単です。
  • VisualStudioでの優れたデザイナーサポート
  • 同じプロジェクトでのみ再利用できます
  • 必要に応じて、テンプレート化されたユーザーコントロールを作成することもできます(あまり一般的には使用されませんが)

カスタムサーバーコントロール

  • 作成するのは難しいですが、考えられるシナリオはさまざまです。
    • Label、Button、...などの既存のコントロールから継承します。
    • 複合コントロールを作成する
    • テンプレート化、+データバインド、コントロールを作成
  • 他のプロジェクトでの優れた再利用性
  • 全社で使用できるフレームワークの作成に最適
于 2010-07-02T12:56:01.193 に答える
0

JavaScript からそれらにアクセスするには、document.GetElementById('<%=TheControl.ClientID%>').
Web コントロールとユーザー コントロールの違いは、ユーザー コントロールには html 定義を含む ascx ファイルがありますが、Web コントロールにはありません。それが他の違いの原因です。また、使用できないユーザー コントロールについては、.ascx をロードするため、代わりnew Control()に使用する必要があります。 .Net コントロールから継承する単純なコントロール (検証機能付きのテキスト ボックスなど) の場合、私は Web コントロールを使用する傾向があります。HTML と内部コントロールを使用したより複雑なコントロールには、ユーザー コントロールを使用する傾向があります。しかし、それは基本的にあなたの個人的な好みです。LoadControl

于 2008-09-22T17:07:29.960 に答える
0

単純:

ユーザーコントロール:

  • インスタンスの初期化を完了するには、UserControl に *.ascx ファイルが必要です。そのため、ある UserControl を別の UserControl から派生させることはできません。
  • UserControl には *.ascx ファイルがあるため、簡単に HTML を記述できます。そして (最大の利点) ファイルのコンテンツ *.ascx を変更し、Web アプリケーションの実行時にコントロールの外観を変更できます。

Web コントロール:

  • WebControl はアセンブリの「唯一の」クラスであるため、それらから別のコントロールを派生させることができます。
  • WebControl には *.ascx (または別の) ファイルがありません。誰もこのコントロールの外観を変更することはできません (資格のない Web 管理者など)。
于 2008-09-22T17:09:19.097 に答える
0

それは完全に真実ではありません。Web コントロールはボタンのようなもので、デザイナーを作成してデザイナー モードでレンダリングすることができます。

主な違いは、Web コントロールがアトミック ユニットであることです。これは、Visual Studio (デザイナー モードを含む) にある他のすべての既定のサーバー コントロールと同じように機能するはずです。さらに、完全にコードで構築され、DLL に保存されます (つまり、html 側はなく、Web サイトには何も公開されません)。

ユーザー コントロールは、ASP インクルードの .NET バージョンです。対応するコード ビハインド ページを含む html スニペットがあります。公開中に Web サイトにプッシュされる ASCX ファイルがあります。追加の注意として、これらはサーバー コントロールよりも開発が容易です。

一方が他方より優れているか?それは、目標が何であるかによって異なります。ただし、一般的に、他の人やプロジェクトが利用できるものを構築する場合は、Web コントロールを使用します。独自のプロジェクトで使用するものを構築している場合は、ユーザー コントロールを使用してください。

さて、JSに関する限り、それは説明するのが難しいことであり、それ自体でかなり大きな議論が必要です. サーバー コントロールの場合、JS が各内部コントロールのクライアント ID を取得するためのフックを提供する必要があります。ユーザー コントロールの場合、JS をユーザー コントロールに直接コーディングして、ASPX ページと同じ方法でコントロールにアクセスできます。

于 2008-09-22T17:13:24.610 に答える