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 文档:
CodeFileBaseClass
指定页面的基类及其关联的代码隐藏类的类型名称。此属性是可选的,但在使用时,
CodeFile属性也必须存在。当您想要实现共享场景时使用此属性,您可以在基类中定义公共字段(以及可选的关联事件)以引用网页中声明的控件。由于 ASP.NET 代码生成模型,如果您在基类中定义字段而不使用此属性,则在编译时将为网页中声明的控件生成新的成员定义(在单独的部分类存根中),而你想要的场景将不起作用。但是如果你使用CodeFileBaseClass属性将基类与页面相关联,并使您的部分类(其名称分配给Inherits属性,其源文件由CodeFile属性引用)从基类继承,然后基类中的字段将能够在代码生成后引用页面上的控件。