Master Page properties

R

rmccinc

Hello-

I am missing something very easy here I think.

I have 3 files

test.master.vb (Master)
content.aspx.vb (content)
Control.ascx.vb (user Control)

All 3 work fine together, but I am not being able to get/set parameters
like I think I should. I think it has something to do with in the order
of the load events. Please see the <<<<<Problem areas>>>>>> in below
code.

Thanks,
Chris



----------------------------
test.master.vb
--------------------------------
Imports System.Web.Security

Namespace TEST
Partial Class Master
Inherits System.Web.UI.MasterPage

Private m_UserId As String = -1
Private m_PageTitle As String

Public Property PageTitle() As String
Get
Return m_PageTitle
End Get
Set(ByVal value As String)
m_PageTitle = value
End Set
End Property

Public Property UserId() As String
Get
Return m_UserId
End Get
Set(ByVal value As String)
m_UserId = value
End Set
End Property


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

m_UserId = 2

' set page title coming from content pages
Title.Text = "Test Site"
If m_PageTitle <> "" Then Title.Text += " - " & m_PageTitle

End Sub
End Class
End Namespace




----------------------------
content.aspx.vb
----------------------------
Imports System.Web.Security

Namespace TEST
Partial Class Brands
Inherits System.Web.UI.Page

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Master.PageTitle = testUserControl.BrandName

testUserControl.UserId = Master.UserId
''''<<<<<Master.UserId IS SET TO -1, not what the masterpage Page_Load
sets it to>>>>>>

End Sub
End Class
End Namespace




----------------------------
Control.acsx.vb
----------------------------
Namespace AVB.Controls

Partial Class SupplierCategories
Inherits System.Web.UI.UserControl

Private m_BrandName As String

Public Property BrandName() As String
Get
Return m_BrandName
End Get
Set(ByVal value As String)
m_BrandName = value
End Set
End Property


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load


If Not IsPostBack Then
m_BrandName = "Title From User COntrol" ''' <<<<<NEVER
MAKES IT TO MASTER PAGE via content.aspx.vb Page_Load >>>>>>


End Sub


End Class

End Namespace
 
S

Scott Allen

The order of events, I suspect, is that the Page_Load for Brands fires
first, followed by Page_Load for Master, then SupplierCategories.

Your code looks as if it would break even if the order of events is
reversed - the Master class depends on the user control being
initialized first and the user control depends on the Master to be
initialized first. Was that just an experiment?
 
R

rmccinc

Scott said:
The order of events, I suspect, is that the Page_Load for Brands fires
first, followed by Page_Load for Master, then SupplierCategories.

Your code looks as if it would break even if the order of events is
reversed - the Master class depends on the user control being
initialized first and the user control depends on the Master to be
initialized first. Was that just an experiment?
I am experimenting/learning to get this working. I wonder if it is even
possible to do what I am attempting:

1. Store my authenticated userid in master and use it in the control

2. Change the page title (in master) by setting it in my control

Any suggestions would be appreciated.
 
S

Scott Allen

I think I'd make the Page derived class responsible for those tasks.
The Page could query the usercontrol as to what the title should be,
and set the title.

I'm not sure how you are using UserID, but I don't think I'd make the
master page responsible for carrying the UserID. I'd use master pages
strictly for UI layout and keep out any other logic.
 
R

rmccinc

Scott said:
I think I'd make the Page derived class responsible for those tasks.
The Page could query the usercontrol as to what the title should be,
and set the title.

I'm not sure how you are using UserID, but I don't think I'd make the
master page responsible for carrying the UserID. I'd use master pages
strictly for UI layout and keep out any other logic.


I agree, I created a base class to manage the userid as in :

http://aspnet.4guysfromrolla.com/articles/041305-1.aspx

Thanks for the input!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top