Solved

Passing variables between web pages with VB.Net

Posted on 2006-06-29
8
351 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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
 
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

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…

740 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