如何从父页面asp.net调用用户控件中的函数

时间:2013-03-29 19:34:35

标签: asp.net visual-studio-2010 web-applications

Asp.Net 4.0

是否可以在代码后面的父页面中调用用户控件中的函数? 用户控件是由其他程序员创建的,但是每个程序员都会有一个我想要的公共函数叫做“Output”,它返回主页需要的值。主页面有一个主菜单,因此根据主菜单选择只显示一个用户控件。

带有用户控件的WebApp中的

文件夹:

> UserControls
  ProductA.ascx
  ProductB.ascx
  ProductC.ascx
  ProductD.ascx
  etc...

当用户点击菜单按钮时代码落后:

Dim product As string = Session("MenuProduct")
Dim uc As UserControl
uc = LoadControl("~/UserControls/" & product & ".ascx")
InputPanel.Controls.Add(uc)

用户控件中的功能我想访问。这将是一个常见的功能。

Public Function Output(ByVal ParamArray expr() As Object) As Object

   ...code

End Function

2 个答案:

答案 0 :(得分:0)

如果具有正确的访问修饰符,则可以从父页面调用userControl中的函数。公众我相信

Dim product As string = Session("MenuProduct")
Dim uc As UserControl
uc = LoadControl("~/UserControls/" & product & ".ascx")
InputPanel.Controls.Add(uc)

if (uc is TypeWithMethod )
{
    Dim ucTyped As TypeWithMethod
    ucTyped = uc As TypeWithMethod
    ucTyped.Method()
}

Vb语法生锈,不断推出;在每一行之后。

答案 1 :(得分:0)

以下是安德鲁所谈论的细节......

Public Interface IGroupable
    Function GetGroupId() As Int32
End Interface


Class MyUserControl
    Inherits UserControl
    Implements IGroupable
    Public Function GetGroupId() As Integer Implements IGroupable.GetGroupId
        Return 1
    End Function
End Class

Class MyPage
    Inherits Page
    Dim id As Int32 = DirectCast(myUserControl, IGroupable).GetGroupId()
End Class

所以基本上创建一个界面,让所有用户控件实现该界面,然后在网页中加载任何用户控件时......只需将它们CAST到您的界面名称类型....界面将有权访问该功能。