3

我正在从内容页面调用母版页的共享功能。在该共享功能中,我想访问母版页中的控件,但我不知道如何。

主控

<asp:Literal ID="ltCurrency" runat="server" />

主主变种vb

Partial Public Class main
Inherits System.Web.UI.MasterPage

Public Property CurrencyText() As String
    Get
        Return ltCurrency.Text
    End Get
    Set(ByVal value As String)
        If value <> "" Then
            ltCurrency.Text = value
        End If
    End Set
End Property

Public Shared Function DoSomething() As String  
    ltCurrency.Text="SOME TEXT" 'throws error: Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.    

    CurrencyText="SOME TEXT" 'this property isn't found at all

'我还尝试实例化当前母版页的一个新类:Ctype(main,Masterpage).CurrencyText

End Function


End Class

从 page1.aspx 我调用:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    main.DoSomething()
End Sub

我还可以做些什么?

4

2 回答 2

4

对于它的价值(我不知道您为什么需要将其共享),您可以使用它HttpContext来获取对您的页面并从那里到您的主人的引用:

Public Shared Function DoSomething() As String
    Dim myPage = TryCast(HttpContext.Current.Handler, Page)
    If myPage IsNot Nothing Then
        Dim myMaster As main = TryCast(myPage.Master, main)
        If myMaster IsNot Nothing Then
            myMaster.ltCurrency.Text = "SOME TEXT" 
            myMaster.CurrencyText = "SOME TEXT"
        End If
    End If
End Function
于 2013-02-26T11:37:16.513 回答
0

第 1 步:在您的内容页面中创建一个事件。

Public Event DoSomething(sender as object, myString as String)

步骤 2:在您的主页上,为您刚刚在内容页面中创建的事件添加一个事件处理程序。

Addhandler contentPage.DoSomething, AddressOf ChangeCurrentText

Step3:在处理程序中做任何你想做的事情。

Private Sub ChangeCurrentText(sender, text)
ltCurrency.Text = text
End Sub

Step4:在内容页面发起事件

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    RaiseEvent DoSomething(ME, "BLAH BLAH")
End Sub
于 2013-02-26T11:37:49.893 回答