母版页继承困境

时间:2014-08-06 07:47:44

标签: asp.net inheritance master-pages

这里有点混乱。这是ASP.NET 4.0。查看标记,Default.aspx似乎继承自Site.Master页面。但是查看Default.aspx(名为_Default)的类定义,它继承自Page类,而不是SiteMaster

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

1 个答案:

答案 0 :(得分:0)

想出来。对于寻找解决方案的任何其他人,您需要做的就是将以下指令添加到您的标记中:

<%@ MasterType VirtualPath="~/Site.Master" %>

您可以将此行添加到ASPX文件的顶部,就在<%@ Page ... %>行下方。添加后,只需重建项目即可。现在,您的母版页类的所有公共成员都可以通过名为Master的强类型成员获得。例如,您现在可以使用以下代码访问母版页类中定义的名为MyFunc()的公共函数:

this.Master.MyFunc(); //C#
Me.Master.MyFunc() 'VB.NET

MasterType指令实际上添加了一个名为Master阴影成员,该成员强类型为SiteMaster类(或者您指定的任何母版页类)吐痰代码隐藏类。此新成员隐藏基类成员(其类型为通用MasterPage类),因此允许您直接访问主页成员。该属性在.aspx.Designer.cs/vb文件中定义如下:

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