Asp.net 母版页继承困境
我有点困惑。这是ASP.NET4.0。查看标记,似乎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类来完成我的任务吗,还是应该在我的项目中添加一个独立的模块,并将我的所有功能都添加到该模块中?解决了这个问题。对于其他正在
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