0

ASP.NET 4.0

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

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
4

2 回答 2

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 语法生疏,一直放着;在每一行之后。

于 2013-03-29T19:40:35.887 回答
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

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

于 2013-03-30T07:38:45.487 回答