マスターページでパブリック プロパティを公開しShowWorkText
ますString
。このプロパティは、リテラルのText
. Placeholder
直接アクセスできるコントロールを検索します。そうすれば、コードはより読みやすく、保守しやすくなります。たとえば、Literal
を aに置き換えるとより安全です。そのプロパティにアクセスするには、ページのプロパティをマスターの実際の型にTextBox
キャストする必要があります。Master
リテラルは aUserControl
にあるため、同じアプローチを使用してプロパティを公開する必要があります。次に、マスターはページの代わりにアクセスします。
マスター (タイプSite
):
Public Property ShowWorkText As String
Get
Dim navigationControl As Navigation = Me.placeHolderNav.Controls.OfType(Of Navigation)().FirstOrDefault()
If navigationControl IsNot Nothing Then
Return navigationControl.ShowWorkText
End If
Return Nothing
End Get
Set(value As String)
Dim navigationControl As Navigation = Me.placeHolderNav.Controls.OfType(Of Navigation)().FirstOrDefault()
If navigationControl IsNot Nothing Then
navigationControl.ShowWorkText = value
End If
End Set
End Property
UserControl で (タイプNavigation
はLiteralShowWork
リテラルです):
Public Class Navigation
Inherits System.Web.UI.UserControl
Public Property ShowWorkText As String
Get
Return LiteralShowWork.Text
End Get
Set(value As String)
LiteralShowWork.Text = value
End Set
End Property
End Class
テキストを設定したいページで(前述のようSite
にマスターのタイプです):
Dim site As Site = TryCast(Me.Master, Site)
If site IsNot Nothing Then
site.ShowWorkText = "hello"
End If