Originariamente inviato da pietro09
:master: Dato che non uso le Master scrivo non per risolvere il problema, ma per imparare qualcosa anche io.
Ho fatto questa prova. Ho caricato un UserControl (.ascx) nel master.
Dentro il master ho messo una procedura pubblica che fa da interfaccia tra la Content e la Master,
Public Sub MiaFunzione(ByVal point As Integer)
Me.orologio1.aLabelOrario.Font.Size = FontUnit.Point(point)
End Sub
ossia, invocando MiaFunzione dal Content, invoco un metodo dell'usercontro (orologio1)
la invoco così
DirectCast(Me.Master, prove_MasterPage).MiaFunzione(58)
nota che non posso invocare il metodo MiaFunzione direttamente da Master, ma debbo fare un cast esplicito alla classe vera.
Il secondo modo che ho trovato è questo.
Nella pagina Content metto un riferimento all'usercontrol
<%@ Reference Control="~/controlli_utente/orologio/orologio.ascx" %>
e da codice uso la reflection per invocare il metodo dell'uc.
Dim o As orologio = TryCast(Me.Master.FindControl("orologio1"), orologio)
If o IsNot Nothing Then
o.aLabelOrario.Font.Size = FontUnit.Point(36)
End If
:master: non so se serva, comunque ci ho provato
ps. questo è l'ultimo modo che ho trovato
nel master creo un proprietà pubblica a solo lettura che referenzia l'UC
Public ReadOnly Property orologio() As orologio
Get
Return Me.orologio1
End Get
End Property
nella pagina Content aggiungo la direttiva MasterType
<%@ MasterType VirtualPath="~/prove/MasterPage.master" %>
oltre al riferimento all'UC
<%@ Reference Control="~/controlli_utente/orologio/orologio.ascx" %>
e finalmente da codice posso invocare un metodo dell'UC
Me.Master.orologio.aLabelOrario.Font.Size = FontUnit.Point(36)