用户控制执行页面类方法(动态)

时间:2012-09-09 21:09:21

标签: asp.net vb.net

我有很多继承基类的aspx页面。 基类有一个方法名称“GetGroupID”,这个方法返回不同的数据取决于我所在的页面,现在几个页面需要覆盖这个方法(这很好)。

问题: 我有几乎所有页面中的用户控件,现在这个用户控制来自页面基类的Accessess GetGroupID方法,只要我知道页面类名,这很好,因为我有这么多页面,一个基类和一个用户控件... 如果我可以从UserControl获取Page Class名称并动态执行基本方法,那将是很好的。

Curreny我有以下代码在UserControl中工作

Dim c As homepage = CType(Me.Page, homepage)
Call c.getGroupID

但是在上面的示例中,我知道了Page Class名称(主页),但是假设我在一个具有类名“portal”的不同页面上,我将无法跟踪这么多页面。

我想在用户控件中的基类中执行该方法,并且我想为某些页面覆盖此方法。

请告知。

1 个答案:

答案 0 :(得分:1)

您可以让基页实现自定义interface,例如IGroupable,方法为GetgroupId。然后你只需要在UserControl知道它是Page IGroupable(直接或通过继承)你知道确保它有一个方法GetgroupId

Public Interface IGroupable
    Function GetGroupId() As Int32
End Interface

Class BasePage
    Inherits Page
    Implements IGroupable
    Public Overridable Function GetGroupId() As Integer Implements IGroupable.GetGroupId
        Return 1
    End Function
End Class

Class ChildPage
    Inherits BasePage
    ' default implementation of GetGroupId from base page '
End Class

Class SpecialPage
    Inherits BasePage
    ' override it here since it has a different implementation than in the base page '
    Public Overrides Function GetGroupId() As Integer
        Return 2
    End Function
End Class

您以这种方式获取UserControl中的ID:

Class UserControl1
    Inherits UserControl
    Dim id As Int32 = DirectCast(Me.Page, IGroupable).GetGroupId()
End Class