3

Asp.net Web フォームでは、ユーザー コントロールが部分的でなければならないのはなぜですか? 部分的なキーワードを削除しようとしましたが、次のように表示されます。

'test' 型の宣言に部分修飾子がありません。この型の別の部分宣言が存在します

他の宣言はどこにありますか?

ユーザーコントロールでジェネリック型を渡そうとしていますが、どうすればよいですか? 他の宣言も変更しないとできません。見つからなかったので、部分的なキーワードを削除しました。

注: WebApplication を作成している場合は 3 つのファイルがありますが、Web サイトを作成している場合は 2 つのファイルしか取得できません。

UserControl.ascx
UserControl.ascx.cs 

ウェブサイトで他の宣言はどこにありますか?


ジェネリックが必要な理由は、グリッドユーザーコントロールを作成しているため、データソースが持つタイプを渡したいからです。

4

4 に答える 4

1

実際には、ユーザーコントロールごとに3つのファイルがあります。

UserControl.ascx
UserControl.cs
UserControl.designer.cs

デザイナファイルにはpartial実装があります。これは、背後にあるコードもである必要があるためですpartial

于 2010-08-19T00:43:46.217 に答える
1

デザイナーはデザインウィンドウで行う作業を自動生成するため、部分的である必要があります。通常、そのコードはfoo.designer.cs(またはasp.netフォームの拡張子が何であれ)にあります。クラスを変更する場合は、デザイナを使用せずに手動でUIを生成するか、デザイナを使用してコードを適切なクラスにコピーする必要があります。

于 2010-08-19T00:44:07.343 に答える
1

ASP.NETは、ASPXファイルで宣言したすべてのサーバー側コントロールをクラスに生成し、コードバインドに付属する他のすべてのデータファイルをマージする必要があるため、コードハインドに部分クラスを使用します。これにより、ASP.NETが使用するクラスを複数のファイルに分散できます。

MSDNから:

コードファイルには、部分クラスが含まれています。つまり、キーワードpartial(Visual BasicではPartial)を含むクラス宣言は、ページの完全なクラスを構成するコード全体の一部のみが含まれていることを示します。部分クラスでは、アプリケーションがページに必要とするコードを追加します。

これが重要な部分です。

ページがコンパイルされると、ASP.NETは.aspxファイルに基づいて部分的なクラスを生成します。このクラスは、分離コードクラスファイルの部分クラスです。生成された部分クラスファイルには、ページのコントロールの宣言が含まれています。この部分クラスを使用すると、コントロールを明示的に宣言しなくても、分離コードファイルを完全なクラスの一部として使用できます。

ジェネリック型をユーザーコントロールに追加して何をしようとしていますか?TypeUserControlにプロパティを追加し、それを使用することでこれを実現できますか?

于 2010-08-19T00:48:08.567 に答える
0

それらは部分的である必要はありません。実際、私は部分的なクラスを使用したことがありません。一部のコード生成ツールは部分的に使用するため、GUI作業に基づいてビットを簡単に変更できます。これは、コードではなくツール用です。

于 2010-08-19T00:45:58.507 に答える