Solved

MessageBox not showing message before response.redirect happens

Posted on 2010-08-17
12
1,668 Views
Last Modified: 2012-06-21
Our web app has multiple pages.  Default.aspx is meant to be the start page.  I'm trying to code something to guard against a user bookmarking another page such as Actions.aspx.  Session["intCaseID"] is set in the Default.aspx page so if it is null then the user must have bookmarked the Actions.aspx page.

The code below will transfer a user to Default.aspx but will not display the message box.  I expected the page to wait until the user had clicked the "OK" button before it executed the response.redirect.  Why did it not wait?

Thx,

Eric
if (Session["intCaseID"] == null)

        {

            Utility.MessageBox("Redirecting you to the start page...");

            Response.Redirect("Default.aspx");

        }

Open in new window

0
Comment
Question by:Eric3141
  • 7
  • 5
12 Comments
 
LVL 42

Expert Comment

by:sedgwick
Comment Utility
what is Utility.MessageBox?is it windows.forms.MessageBox or a custom one?
0
 
LVL 2

Author Comment

by:Eric3141
Comment Utility
The MessageBox method is contained in a custom class called Utility. The code is below.

public static class Utility
{

public static void MessageBox(string MyMessage)
{
//This method pops a message box onto the screen to display whatever
//text you pass into the method via the input parameter.
string ScriptString = "alert('" + MyMessage + "');";

System.Web.UI.Page page = HttpContext.Current.Handler as System.Web.UI.Page;
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), "ClientScript", ScriptString, true);

}
0
 
LVL 42

Accepted Solution

by:
sedgwick earned 500 total points
Comment Utility
try:

ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('"+MyMessage +".');window.open('AnotherPage.aspx','_self');", true);
0
 
LVL 42

Expert Comment

by:sedgwick
Comment Utility
sorry, u need to integrate the "redirect" in the script:

string ScriptString = "<scriptlanguage='JavaScript'>alert('" + MyMessage + "');window.location.href =
'Default.aspx';</script>";
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), "ClientScript", ScriptString, true);

check http://bytes.com/topic/asp-net/answers/730759-show-alert-box-then-redirect
0
 
LVL 2

Author Comment

by:Eric3141
Comment Utility
The first one you gave worked.  The 2nd one gave this error:
 The name 'page' does not exist in the current context  
0
 
LVL 42

Expert Comment

by:sedgwick
Comment Utility
just remove the 'page':
string ScriptString = "<scriptlanguage='JavaScript'>alert('" + MyMessage + "');window.location.href =
'Default.aspx';</script>";
ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), "ClientScript", ScriptString, true);
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 2

Author Comment

by:Eric3141
Comment Utility
Now it says "A runtime error has occurred.  Do you wish to debug?"

If this is getting to be too much trouble for you I can just use the first suggestion you gave which worked though there was a slight hesitation before the redirect happened.
0
 
LVL 42

Expert Comment

by:sedgwick
Comment Utility
the runtime error occur cause i probably misspelled the script.
if the 1st suggestion works for you, and suit your needs than use it :)
0
 
LVL 2

Author Comment

by:Eric3141
Comment Utility
I hate to ask now but what would the 2nd script (that gave the error) do that the first would not?  Were there any real advantages to it?
0
 
LVL 42

Expert Comment

by:sedgwick
Comment Utility
the 2nd suggestion simply use the 'Redirect.Response' in the javascript itself.
they both have the same result, no a meaningful difference either way.
0
 
LVL 2

Author Comment

by:Eric3141
Comment Utility
Sedqwick:

I was able to take the first code you gave me and create a custom class so I can call this from multple pages.  Thanks for the help!


  public static void WrongSiteEntry()
  {
      //This method handles the case where someone has entered the site via a page other than
      //Default.aspx.  This happens when they bookmark one of the other pages besides Default.aspx.
      //It gives them a message box telling them they being redirected to the start page then
      //redirects them to Default.aspx

      string MyMessage = "Redirecting you to the start page...";
      string ScriptString = "alert('" + MyMessage + ".');window.open('Default.aspx','_self');";

      System.Web.UI.Page page = HttpContext.Current.Handler as System.Web.UI.Page;
      page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), "ClientScript", ScriptString, true);
  }
0
 
LVL 42

Expert Comment

by:sedgwick
Comment Utility
glad it was helpful. :)
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

Summary: Persistence is the capability of an application to store the state of objects and recover it when necessary. This article compares the two common types of serialization in aspects of data access, readability, and runtime cost. A ready-to…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

771 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

10 Experts available now in Live!

Get 1:1 Help Now