2013-03-29 133 views
0

Asp.Net 4.0如何從父頁面asp.net調用功能的用戶控制

是否有可能在後面的代碼調用用戶控件的功能從父頁? 用戶控件是由其他程序員創建的,但是每個用戶控件都有一個通用的公用函數,我稱之爲「輸出」,它返回主頁面所需的值。主頁面有一個主菜單,所以根據主菜單選擇只顯示一個用戶控件。在Web應用程序

文件夾的用戶控件:

> 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 

回答

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語法生鏽,不斷放;每行後。

+0

它已經公開。因爲uc只聲明爲UserControl類型,所以不能看到它。只是想知道如果可能的話一些其他方式。 – TroyS

+0

我明白了,如果第一次你必須投。讓我寫一些代碼片段 –

+0

這似乎是合乎邏輯的,但.net在輸入時沒有在後面的asp.net代碼中識別TypeWithMethod。 – TroyS

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 

所以basicly創建一個接口,具有當你加載任何用戶控件的所有用戶控件的實現該接口,然後在網頁內...只需將它們轉換爲您的界面名稱的類型....您的界面將有權訪問該功能。

相關問題