c# - 单击“确定”按钮后,进行页面重定向

标签 c# javascript class messagebox

下面是我的 WebMsgBox 类。我用它来打印一些消息。

using System;
using Microsoft.VisualBasic;
using System.Text;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

/// <summary>
/// Summary description for WebMsgBox
/// </summary>

public class WebMsgBox
{

    protected static Hashtable handlerPages = new Hashtable();

    private WebMsgBox()
    {

    }



    public static void Show(string Message)
    {

        if (!(handlerPages.Contains(HttpContext.Current.Handler)))
        {

            Page currentPage = (Page)HttpContext.Current.Handler;

            if (!((currentPage == null)))
            {

                Queue messageQueue = new Queue();

                messageQueue.Enqueue(Message);

                handlerPages.Add(HttpContext.Current.Handler, messageQueue);

                currentPage.Unload += new EventHandler(CurrentPageUnload);

            }

        }

        else
        {

            Queue queue = ((Queue)(handlerPages[HttpContext.Current.Handler]));

            queue.Enqueue(Message);

        }

    }



    private static void CurrentPageUnload(object sender, EventArgs e)
    {

        Queue queue = ((Queue)(handlerPages[HttpContext.Current.Handler]));

        if (queue != null)
        {

            StringBuilder builder = new StringBuilder();

            int iMsgCount = queue.Count;

            builder.Append("<script language='javascript'>");

            string sMsg;

            while ((iMsgCount > 0))
            {

                iMsgCount = iMsgCount - 1;

                sMsg = System.Convert.ToString(queue.Dequeue());

                sMsg = sMsg.Replace("\"", "'");

                builder.Append("alert( \"" + sMsg + "\" );");

            }

            builder.Append("</script>");

            handlerPages.Remove(HttpContext.Current.Handler);

            HttpContext.Current.Response.Write(builder.ToString());

        }

    }

}

当我使用此类的方法时显示如下

WebMsgBox.Show("some message");

它工作正常,但是当我执行如下操作时

WebMsgBox.Show("some message");
Response.Redirect("myform.aspx");

然后它不显示该消息。我需要它,就像执行此代码时一样,首先它显示消息,然后当我单击“确定”按钮(位于消息框上)时,它应该重定向到 myform.aspx。

我不想更改此类的代码,因为我在多种表单中使用此类,我无法仅针对一种表单更改此类的代码。

我怎样才能做到这一点。

最佳答案

您必须重定向客户端:

   builder.Append("alert( \"" + sMsg + "\" );");
   builder.Append("window.location = 'myform.aspx';");

Response.Redirect 重定向您的页面而不显示它!

关于c# - 单击“确定”按钮后,进行页面重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16958043/

相关文章:

c# - yield 返回多少?

javascript - 链接仅在第一次点击时有效,从第二次点击开始不会重定向到 href 中指定的页面

javascript - Internet Explorer innerHTML "Object doesn' t 支持此属性或方法”

c++ - 如何调用父类拷贝构造函数?

c# - 将 Dictionary<T> 绑定(bind)到 WPF 列表框

c# - 在图像按钮中加载图像

javascript - Google Map API v3 ~ 只需关闭信息窗口?

jquery - 删除固定类并不能正确地将它们从演示文稿中删除

c# - 从 XML 生成类 : xsd. 找不到 exe

C# 方法错误 : Unreachable code detected and not all code paths return a value”