Page_Load method issues with Back Button

G

Guest

Hi,

I have a question regarding the Page_Load method and Back Button of
Internet explorer. I have created a webform. In that webform I have several
Text Boxes. Also I have two buttons. When I click on button1, it populates
the text boxes with person1 details. When I click on button2, it populates
the text box with person2 details and redirects to webform2. In webform2 if I
click on Back Button of Internet Explorer it should display details of
person2. But I am getting details of person1. I am thinking the reason for
this might be like this. When I Click on button1 in webform1, it actually
creates a new webform1. when I click on button2 on this new webform1 it is
actually not creating the new webform but just redirecting to webform2. So
when I click on back button it is displaying person1 details. Is there a
workaround for this? Please let me know.

Thnx,
Sridhar.
 
S

S. Justin Gengo

Sridhar,

You're very close to figuring this out yourself. You are somewhat correct in
saying that the second button click doesn't create the web form. The web
form does get created on the server. But the server is never sending it to
the client. Instead the client receives the response.redirect and still has
the original first form in it's cache.

To work around this problem your redirect has to occurr client side. The way
I would do it would be to populate the second instance of the form and send
it back to the client but also send back a clientside startup script (i.e.
RegisterStartupScript) that will use a javascript redirect to send the
client to the new page. This way the client will actually cache the second
version of the form. However, you may need to do something special in that
script so that the redirect doesn't occurr if the back button has been hit.

A sample javascript redirect script is here:
http://www.codeave.com/javascript/code.asp?u_log=7002


--
Sincerely,

S. Justin Gengo, MCP
Web Developer / Programmer

www.aboutfortunate.com

"Out of chaos comes order."
Nietzsche
 
G

Guest

Hi Justin,

Thanks for the clarification. In fact I did use the
RegisterStartupScript to do that. But as you said I need to do something
special in that script so that the redirect doesn't occurr if the back
button has been hit. I am not knowing how to do that. Can you give me some
ideas on how to do that?

Thnx,
Sridhar.
 
S

S. Justin Gengo

Sridhar,

Off the top of my head here's the way I think I'd try first:

Create a hidden filed on the form that can hold a value which will tell your
startup script if it should run or not. Just before the script does the
redirect set the hidden field to a different value. I believe that when the
back button is clicked the hidden field will retain the new value and may be
used to keep the script from running.

--
Sincerely,

S. Justin Gengo, MCP
Web Developer / Programmer

www.aboutfortunate.com

"Out of chaos comes order."
Nietzsche
 
G

Guest

Hi Justin,

Thank you for taking time in replying back. I tried that but it is not
retaining the new value. It is going back to the past value. So again it is
redirecting it.

Thnx,
Sridhar.
 
B

Bruce Barker

when a user hits back, the browser generally fetchs the previous page from
its caches, no request is sent to the server. if the last request response
was a redirect, as it was in your case, then the redirect is done again. you
can turn of caching of your pages, which will cause the browser to resubmit
the form post, rather than fetch from the cache. this will cause the browser
to popup the dialog asking the user if they want to resubmit the form.

a better approach is design your site to be navigation friendly. in asp.net
1.0 don't overload a button like you have, either navigate, or save, but not
both. in asp.net 2.0 you can support this by posting to the new page, rather
than using redirect, then caching will work correctly.

-- bruce (sqlwork.com)
 
G

Guest

Hi Bruce,

Thank you for the reply. I am using ASP.NET 1.1. I tried turning off
the cache. The problem is when the user clicks the Back Button, it says
"Warning: PAge has expired" something like that. Please click refresh. I
don't want to display that message every time the user hits the back button.
That is why I am going with this approach. If you know the workaround for
this situation please let me know.

Thnx,
Sridhar.
 
S

S. Justin Gengo

Sridhar,

Hmmmm, I was hoping the new value would be retained, but I wasn't sure...

I'll think about this and see if I can think of something... In the
short-run is there a reason not to just use panels and keep both forms on
the same page? Then there would be no redirect.

--
Sincerely,

S. Justin Gengo, MCP
Web Developer / Programmer

www.aboutfortunate.com

"Out of chaos comes order."
Nietzsche
 

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

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,143
Latest member
SterlingLa
Top