London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!

Properties in page lifecycle?

Vote:
 

I have a control within a page which needs a value to be passed to it but when I try and put in an episerver value it cant see it?

<uc2:NowPlaying ID="myControl" runat="server" ArticleID=<%# CurrentPage["testString"].ToString() %> />

but the follwoing works fine

<uc2:NowPlaying ID="NowPlaying1" runat="server" ArticleID=90 />

The control needs the property from th epage to work, I cant put the property in the control as sometimes its not the data from teh current page which will be used.

#20200
May 22, 2008 12:53
Vote:
 

It is probably a data binding problem in ASP.NET, the property in the PageData object should be there if it has a value. The <%# tags requires databinding to be evaluated, the second example code does not require databinding.

#20205
May 22, 2008 13:27
Vote:
 

Yes the value is there in the aspx page when I dubug but its not pusing through to the ascx control? I was wondering if its trying to render the control before evaulating the property which is needed within it or something?

#20207
May 22, 2008 13:41
Vote:
 

Could be, where are you databinding (the actual call to DataBind()) and where is the logic done in the NowPlaying? By "where" I mean in which event in the page life cycle.

A quick fix is to assign ArticleID in the OnInit event in code behind instead.

#20218
May 22, 2008 15:45
Vote:
 

I tried this

Episerver property = <EPiServer:Property ID="Property1" runat="server" PropertyName="test" /><br />

ASP Literal = <asp:Literal ID="test" runat="server" Text=<%# CurrentPage["test"].ToString() %> /><br />

and it outputs the following

Episerver property = 87
ASP Literal =

 So why are they outputting differant things when they referance the same property??

#20220
May 22, 2008 15:49
Vote:
 

Im not databinding, its a property of the page not a list or something?

#20221
May 22, 2008 15:54
Vote:
 
I hav ejust called databind on my control and it works? Why Do I need to call that when its a property of the page? Does databind have to be called on EVERYTHING then?
#20222
May 22, 2008 16:01
Vote:
 

Well, <%# is the magic ASP.NET keyword for databinding, it will not be evaluated if you don't call DataBind. Otherwise just assign the values from code behind instead.

#20223
Edited, May 22, 2008 16:10
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.