Asp.net 母版页继承困境

Asp.net 母版页继承困境,asp.net,inheritance,master-pages,Asp.net,Inheritance,Master Pages,我有点困惑。这是ASP.NET4.0。查看标记,似乎Default.aspx继承自Site.Master页面。但是看看Default.aspx(名为\u Default)的类定义,它继承自Page类,而不是SiteMaster 现在我需要在多个继承的页面上共享一些函数,并希望将它们添加到SiteMaster类中,以便它们在所有继承的页面中都可用。我可以使用SiteMaster类来完成我的任务吗,还是应该在我的项目中添加一个独立的模块,并将我的所有功能都添加到该模块中?解决了这个问题。对于其他正在

我有点困惑。这是ASP.NET4.0。查看标记,似乎
Default.aspx
继承自
Site.Master
页面。但是看看
Default.aspx
(名为
\u Default
)的类定义,它继承自
Page
类,而不是
SiteMaster


现在我需要在多个继承的页面上共享一些函数,并希望将它们添加到SiteMaster类中,以便它们在所有继承的页面中都可用。我可以使用SiteMaster类来完成我的任务吗,还是应该在我的项目中添加一个独立的模块,并将我的所有功能都添加到该模块中?

解决了这个问题。对于其他正在寻找解决方案的人,您只需将以下指令添加到标记中:

<%@ MasterType VirtualPath="~/Site.Master" %>
MasterType
指令实际上添加了一个名为
Master
shadowing成员,当在类后面吐代码时,该成员强类型为
SiteMaster
类(或您指定的任何母版页类)。此新成员隐藏基类成员(其类型为generic
母版页
类),从而允许您直接访问母版页成员。属性在
.aspx.Designer.cs/vb
文件中定义如下:

Public Shadows ReadOnly Property Master() As YourProjectNamespace.SiteMaster
    Get
        Return CType(MyBase.Master, TagTrakkerOnline2.SiteMaster)
    End Get
End Property

母版页继承与C#中的类继承完全不同。@UweKeim:当我看到继承页的代码隐藏类实际上不是从
SiteMaster
继承时,这一点就变得很明显了
Public Shadows ReadOnly Property Master() As YourProjectNamespace.SiteMaster
    Get
        Return CType(MyBase.Master, TagTrakkerOnline2.SiteMaster)
    End Get
End Property