By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
429,261 Members | 2,662 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 429,261 IT Pros & Developers. It's quick & easy.

Master Page properties

P: n/a
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

Nov 19 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
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?

--
Scott
http://www.OdeToCode.com/blogs/scott/
On 8 Sep 2005 14:22:46 -0700, rm*****@hotmail.com wrote:
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


Nov 19 '05 #2

P: n/a

Scott Allen wrote:
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?

--
Scott
http://www.OdeToCode.com/blogs/scott/

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.

Nov 19 '05 #3

P: n/a
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.

--
Scott
http://www.OdeToCode.com/blogs/scott/

On 9 Sep 2005 06:42:02 -0700, rm*****@hotmail.com wrote:

Scott Allen wrote:
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?

--
Scott
http://www.OdeToCode.com/blogs/scott/

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.


Nov 19 '05 #4

P: n/a

Scott Allen wrote:
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!

Nov 19 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.