Solved

Passing variables between web pages with VB.Net

Posted on 2006-06-29
8
348 Views
Last Modified: 2010-04-23
Hi - I am trying to pass a number of variables from the first web page in my web-site to a second page. I got the following code from M/S help pages, which works fine with a basic web design, but my site uses a master page on both the web pages I mentioned before, the code then fails to work.

---------------------------------------------------
Microsoft Help
---------------------------------------------------
If Not Page.PreviousPage Is Nothing Then
    Dim SourceTextBox As TextBox
    SourceTextBox = CType(PreviousPage.FindControl("TextBox1"), _
        TextBox)
    If Not SourceTextBox Is Nothing Then
        Label1.Text = SourceTextBox.Text
    End If
End If
--------------------------------------------------

I am not particularly interested in why it fails, I really just need someone to point me in the right direction as to how to pass variables from the first page to the second page.

Many thanks for any help
...Steve

P.S. I would prefer not to pass the variables by reference in the second page's URL
0
Comment
Question by:swtiley
8 Comments
 
LVL 14

Expert Comment

by:ptakja
ID: 17014809
How about storing the variables in Session objects?

' Put var into session object:

Session("MyTextbox1") = Textbox1.Text

Pull var from session:

strText = CStr(Session("MyTextBox1"))

To clear session object:

Session("MyTextbox1") = Nothing

Check to see if session object exists:

If Not Session("MyTextBox1") Is Nothing Then
   strText = Cstr(Session("MyTextBox1"))
End If
0
 
LVL 5

Expert Comment

by:t_itanium
ID: 17015746
also you can use cookies to achieve that
0
 
LVL 19

Accepted Solution

by:
arif_eqbal earned 500 total points
ID: 17016007
Hi swtiley
I have had the same issues myself, and after a lot of deliberation I found out a few things about it.
The way of accessing
    PreviousPage.FindControl("TextBox1")
actually depends on where your TextBox is placed, is it directly under the form tag? do you have a Content Tag ? Are you using ContentPlaceHolder ?
Its not very well documented yet, so people are learning it the hard way (like I did)
ultimately I was able to access the textBox like this
   PreviousPage.FindControl("MyContentPlaceHolder").FindControl("textBox1")

So the bottomline is check where your TextBox is "contained" and try to refer it in the Controls collection of that "container"

And if you want a little fun, try putting a Theme using Master Pages, then control hierechy changes further, now you would require one more level of "Container" access,
Also try using the Request Collection, Microsoft says Request.Form collection should give you the access to the TextBox so virtually you should get it like this
   Request.Form("TextBox1")
it works for a normal form but attach a Master Page and it won't, I have posted a query at ASP.NET forum also waiting for some explanation for this wierd behaviour
       http://forums.asp.net/thread/1328168.aspx

However as an End Note to it, the best way to use PreviousPage is by Registering it   <% @ PreviousPageType VirtualPath="..." %>
and then having Properties exposing the fields so that we access the properties in the posted page and not the TextBox like
      PreviousPage.UserName (in case the TextBox1 was used to get User Name and so on) where UserName is a property that returns TextBox1.Text


0
 
LVL 19

Expert Comment

by:arif_eqbal
ID: 17016033
And sorry missed out your actual problem

That also is best solved by registering the first page, say you have 2 pages Page1.aspx and Page2.aspx
then on Page2 have this in the Source at the top
<% @ PreviousPageType VirtualPath="Page1.aspx" %>

Now in Page1 have a property

    Public ReadOnly Property MyPassedValue() As String
        Get
            Return yourLocalVariable 'This can be TextBox1.Text as well
        End Get
    End Property

Then on Page2

If Not Page.PreviousPage Is Nothing Then
        Label1.Text = PreviousPage.MyPassedValue
End If


0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 6

Expert Comment

by:Nandakumar Sakthivel
ID: 17016064
Hi,
   You can use Server.Transfer("<TargetPage>") and can get the value in the second page as
             Request.Form("ControlName")

Nanda
0
 
LVL 7

Expert Comment

by:pradeepsudharsan
ID: 17016094
Hi,

Store the variables in a XML file and call the other page,retreive the values from that XML file.
Otherwise use can use database.

--pradeep
0
 
LVL 11

Expert Comment

by:LordWabbit
ID: 17016118
arif_eqbal suggestion is the way to go, it's called a cross page postback.  Just thouht i would add my 2 cents and say that if the public properties do not show up in the target page then compile the entire project (sometimes just compiling the source page will do) and on the odd occasion opening the .aspx of the target page with the previous page directive will update the environment and make the properties available in PreviousPage.  Also you will need to save the values into viewstate after the first hit because any other postbacks on the page will end up with a previous page of the target page instead of the source page, to facilitate that you can use IsCrossPagePostBack (similar in function to IsPostBack).
0
 
LVL 1

Author Comment

by:swtiley
ID: 17024969
Thanks for all you help...
...Steve
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Since .Net 2.0, Visual Basic has made it easy to create a splash screen and set it via the "Splash Screen" drop down in the Project Properties.  A splash screen set in this manner is automatically created, displayed and closed by the framework itsel…
1.0 - Introduction Converting Visual Basic 6.0 (VB6) to Visual Basic 2008+ (VB.NET). If ever there was a subject full of murkiness and bad decisions, it is this one!   The first problem seems to be that people considering this task of converting…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now