CodeFileBaseClass
、CodeFile
、Inherits
継承の代わりではなく、継承と連携します。
たとえば、存在 CodeFile="page.aspx.cs"
せずに指定すると、次のようになります。page.aspx.cs
Parser Error Message: The file '/page.aspx.cs' does not exist.
存在すると仮定して、存在せずpage.aspx.cs
に指定すると、次のようになります。 CodeFileBaseClass="PageBase.cs"
PageBase.cs
Parser Error Message: Could not load type 'PageBase.cs'.
一方、属性を指定PageBase
せずに継承することもできます。CodeFileBaseClass
ただし、これにより、基本クラスからページ上のコントロールを参照するときに予期しない動作が発生する可能性があります。
Microsoft の @Page MSDN Documentationから引用するには:
CodeFileBaseClass
ページの基本クラスの型名と、関連するコード ビハインド クラスを指定します。この属性はオプションですが、使用する場合は
CodeFile属性も存在する必要があります。Web ページで宣言されたコントロールを参照するために、基本クラスで共通フィールド (およびオプションで関連付けられたイベント) を定義する共有シナリオを実装する場合は、この属性を使用します。ASP.NET コード生成モデルのため、この属性を使用せずに基本クラスでフィールドを定義した場合、コンパイル時に、Web ページ (別の部分クラス スタブ内) で宣言されたコントロールに対して新しいメンバー定義が生成されます。希望のシナリオは機能しません。しかし、CodeFileBaseClassを使用すると属性を使用して基本クラスをページに関連付け、部分クラス (その名前はInherits属性に割り当てられ、そのソース ファイルはCodeFile属性によって参照される) を基本クラスから継承すると、基本クラスのフィールドはコード生成後にページ上のコントロールを参照できるようにします。