VS 2008 で新しい asp.net ページを作成し、コード ビハインドを選択すると、通常の aspx.vb または aspx.cs ファイルも一緒に作成されます。
これらのファイルの先頭で、VS は「部分クラス」の名前、ファイル構造および/または aspx ファイルの名前を指定します。
質問: これに対するベスト プラクティスはありますか? 各ページに一意の名前を付ける代わりに、アプリケーションのすべてのページまたは単一のディレクトリに単一のクラス名を使用できますか?
クリス
VS 2008 で新しい asp.net ページを作成し、コード ビハインドを選択すると、通常の aspx.vb または aspx.cs ファイルも一緒に作成されます。
これらのファイルの先頭で、VS は「部分クラス」の名前、ファイル構造および/または aspx ファイルの名前を指定します。
質問: これに対するベスト プラクティスはありますか? 各ページに一意の名前を付ける代わりに、アプリケーションのすべてのページまたは単一のディレクトリに単一のクラス名を使用できますか?
クリス
「部分クラス」の理由は、Visual Studio がすべての宣言を別のファイルに配置できるようにして、コード ビハインドが乱雑にならないようにするためだと思います。aspx.vb/cs ファイルに加えて、すべてのコントロール宣言を含む designer.vb/cs ファイルもあります。
もう少し詳しい情報については、asp.net: 部分クラスと継承をご覧ください。
私たちのプロジェクトでは、実際の作業のほとんどはサーバー側のタグによってページに挿入されたサーバー コントロールによって行われるため、実際にはほとんどのページで分離コードは必要ありません。したがって、22 個の aspx ページのうち約 18 ページには <%Page%> ディレクティブさえありません。デフォルトのページ基本クラスは、web.config ファイルから設定されます。
<pages masterPageFile="~/MasterPage.master" pageBaseType="OurProject.OurBasePageClass">
</pages>
コード ビハインドは、個々のページに固有です。それをいじると、aspxモデルが壊れます(aspxページの上部にある「継承」などを参照してください)。
各 aspx ページ (通常の ASP.NET 内) には、個別のクラスが必要です。
ASP.NET MVC では、1 つのコントローラー クラスが複数の関連するビューに関連付けられるのが一般的であることに注意してください (また、MVC では aspx/ascx にコード ビハインドがない傾向があります)。
いいえ、各ページは異なるクラスでなければなりません (実際に異なることをしていると仮定します)。これは、ページごとに Page のサブクラスを実際に作成し、特定の動作でデフォルトのロジックをオーバーライドしているためです。したがって、動作の各セット (各「ページ タイプ」) は異なるクラスです。
多くの ASPX ページの "コード ビハインド" と同じクラスを使用することは、実際にはやや一般的です。基本ページ クラスとそれに関連付けられた ASPX ファイルの間で多くの 1 対 1 の処理を行っていることに気付いた場合は、既定のモデルを使用するのが理にかなっています。しかし、それがアプリケーションにとって意味をなさない場合でも、すべての ASPX Inheritsプロパティを同じクラスに向けることを妨げるものは何もありません。
もちろん、どんなことでもそうですが、ルールを破る前にルールを学ぶことが常に最善です。通常の WebForms モデルは、特に ASP.NET WebForms プラットフォームの初心者または中級者の開発者にとって、ほとんどのユース ケースに適合します。だから、何かを変え始める前に、自分が何をしようとしているのかを十分に理解していることを確認してください:)