ASP.NET: Prevent Default Frameset on Refresh or F5
I never liked frames; I try to avoid them whenever possible. I'm not talking about IFRAMES and other cool DHTML stuff - I mean FRAMESET.
I never liked frames; I try to avoid them whenever possible. I'm not talking about
IFRAMES and other cool DHTML stuff - I mean FRAMESET.
Unfortunately,
when there are others doing the GUI design for you, and your job is to implement
the ASP.NET functionality within and around it, you're pretty much stuck with
the crap they give you!
One of the bad behaviors with having a
default frameset in ASP.NET is if a user hits the Refresh Icon or presses F5
while they are viewing a specific page in the main frame, guess what happens?
You guessed right! The frameset dutifully reloads, showing the
default pages that it has coded in it - and as Murphy's Law would predict, they
never will include the page the user was viewing!
So here is what
I did for a quick fix:
Code in Page_Load of Login.aspx (the default
main page of the frameset):
string fixFrames=String.Empty;
try
{
if(Session["CurrentPage"].ToString() !="Login.aspx")
{
fixFrames="<script>window.parent.frames[2].document.location.href
=\""+Session["CurrentPage"].ToString() + "\";";
fixFrames+="window.parent.frames[1].document.location.href =\"CustomControls/Frameleft.aspx\";";
fixFrames+="window.parent.frames[0].document.location.href =\"CustomControls/Frametop.aspx\";</script>";
Response.Write(fixFrames);
}
}
catch{}
Session["CurrentPage"]="Login.aspx";
Code in each page to prevent behavior of Refresh or F5 being
pressed:
Session["CurrentPage"]="NameofThisPage.aspx";
-- Framesets be damned!
N.B -- If you have any code
in your Page_Load that checks credentials or does a redirect based on some condition,
make sure you set the Session["CurrentPage"]
after this code.
Otherwise, you may have set up circular references that won't look very friendly...
Submission Date: 9/23/2005 3:22:20 PM
Submitted By: Peter Bromberg
My Home Page: http://www.eggheadcafe.com
By Peter Bromberg Popularity (767 Views)