How to Use Master Pages (Conclusion) - How to access master page controls from a content page
(Page 3 of 6 )
In many applications, you need to access one or more of the controls in a master page from one of the application’s content pages. For example, the master page shown earlier in this chapter has a label in the footer area that normally displays the number of days remaining until Halloween. But what if you want to display other information in this label when certain content pages are displayed?
For example, when the user is shopping for products with the Order.aspx page, you may want to display the number of items currently in the shopping cart instead of the number of days left until Halloween. To do that, you can expose a master page control as a public property, and then access the property from the content page.
How to expose a master page control as a public property
The easiest way to access a control on a master page from a content page is to create a public property that provides access to the control. Figure 3-8 illustrates a code-behind file for a master page that shows you how to do that.
First, you create a public property in the master page that identifies the control you want to be able to access. In this case, the property is a Label type, and the property is named MessageLabel. Then, you code get and set procedures for the property. Here, the get procedure returns the lblMessage label, and the set procedure assigns the property value to lblMessage.
Please notice that I also added another If statement to the Page_Load procedure for the master page. Now, the lblMessage label is set to the number of days left until Halloween only if the value of the label’s Text property is empty. That way, if the content page has assigned a value to this label in its Page_Load procedure, the master page’s Page_Load procedure won’t overwrite the value. This works because the content page’s Page_Load procedure is called before the master page’s Page_Load procedure.
The code-behind file for a master page that provides a public property (figure 3-8)
Partial Class MasterPage
Inherits System.Web.UI.MasterPage
Public Property MessageLabel() As Label
Get
Return lblMessage
End Get
Set(ByVal value As Label)
lblMessage = value
End Set
End Property
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
If lblMessage.Text = "" Then
Dim iDaysUntil As Integer = DaysUntilHalloween()
If iDaysUntil = 0 Then
lblMessage.Text = "Happy Halloween!"
ElseIf iDaysUntil = 1 Then
lblMessage.Text = "Tomorrow is Halloween!"
Else
lblMessage.Text = "There are only " & iDaysUntil _
& " days left until Halloween!"
End If
End If
End Sub
Private Function DaysUntilHalloween() As Integer
Dim dtmHalloween As Date = New DateTime(DateTime.Today.Year, 10, 31)
If DateTime.Today > dtmHalloween Then
dtmHalloween.AddYears(1)
End If
Dim tsTimeUntil As TimeSpan = dtmHalloween - DateTime.Today
Return tsTimeUntil.Days
End Function
End Class
Description
- A content page can access a control in the master page if you expose the control as a public property in the master page. To do that, you code a property procedure with get and set procedures.
Next: How to access a public property of the master page from a content page >>
More ASP.NET Articles
More By Murach Publishing
|
This article is excerpted from chapter three of the book Murach’s ASP.NET 2.0 Upgrader’s Guide: VB Edition, written by Anne Boehm and Joel Murach (Murach, 2005; ISBN: 1-890774-36-7). Check it out today at your favorite bookstore. Buy this book now.
|
|