在WEB程序中,没有WINFORM里一样的messagebox,感觉与客户交互起来有点困难!比如说,当客户执行在服务器端的处理操作成功,则提示,失败也提示,如此类似的交互问题。不知大家都是怎么处理的!
   我说一下我的处理方式,希望大家指正:   1、利用脚本,类似:Response.Write("<script language=javascript>alert('"+ msg +"');</script>");
   2、直接输出到页面上:Response.Write(msg);
   3、用一个统一的页面来处理(输出),把提示信息作为参数传到该页面。后两种方式其实性质上是一样,只不过处理方式不同!
我觉得以上三种处理都不好用。
  第一种:当按“IE中的后退”时,会重复提示。当然,也可以弹出提示后,再 Response.Redirect至本页面,这样就不会重复弹出,但总觉得页面重新加载一次不好。
  第二种:直接输出,处理不方便。
  第三种:这样传参数的话,提示信息会出现在地址栏中,也不好!不知大家都是怎么处理类似问题的!!

解决方案 »

  1.   

    我是用一个模式窗体来模拟的MessageBox,看看下列代码对你有没有用:
    //使用方法:建一个基页面,将下列函数复制过去,其它所有页面从基页面继承,在派生页面中按钮事件中就可以调用下面的函数
    //在弹出窗口的aspx中<head></head>间加入以下代码:<base target="_self">//弹出一个模式窗口
    //url:弹出窗体地址
    //width:弹出窗体宽度
    //height:弹出窗本高度
    //allowStatus:是否显示状态条
    //allowScroll:是否显示滚动条
    //refreshParent:返回时是否刷新父窗体
    //refreshButtonID:保留不用,即为空字符串 public void CspOpenWindowModal (string url, int width, int height,string allowStatus,string allowScroll,bool refreshParent,string refreshButtonID)
    {
    string options="'dialogWidth="+width+"px;dialogHeight ="+height+"px;"+
    "help=no;status="+allowStatus+";scroll="+allowScroll+"'";
    if(refreshParent==true)
    {
    GetPostDoPostBackScript();
    }
    RegisterStartupScript(Guid.NewGuid().ToString(), "<script language=\"JavaScript\">" + GetPopupScriptModal(url, options, refreshParent,refreshButtonID) + "</script>");
    } protected string GetPopupScriptModal(string url, string options,bool refreshParent,string refreshButtonID)
    {
    string returnScript;
    if(refreshParent==true)
    {
    returnScript="var w=window.showModalDialog(\"" + url + "\", '', " + options + ");__doPostBack('"+refreshButtonID+"','');";
    }
    else
    {
    returnScript="var w=window.showModalDialog(\"" + url + "\", '', " + options + ");";
    }
    return returnScript;
    }/************************************关闭窗体************************/
    //关闭一个窗口
    //refreshParent:是否刷新父窗体,对模式窗体无效,只能是false
    public void CspCloseWindow (bool refreshParent)
    {
    RegisterClientScriptBlock(Guid.NewGuid().ToString(), "<script language=\"JavaScript\">" + GetCloseWindowScript(refreshParent) + "</script>");
    } protected string GetCloseWindowScript(bool refreshParent)
    {
    string script="";
    if (refreshParent)
    {
    script = "window.opener.document.forms(0).submit();";
    }

    return script+"window.close();";
    }
      

  2.   

    B/S 与 C/S 的一个很重要的不同就在于B/S的交互性差一些
      

  3.   

    谢谢 :  zhilunchen(他山居士) 
      
       这种方法挺好的,再对样式进行控制,确实挺像WINFORM的MessageBox,但有个疑问,比如我要显示提示信息,那应该是通过Request.QueryString 的方式传过去的,万一提示信息过长,就有可能显示不出来,
      

  4.   

    呵呵,有这么长的提示么?URL可以有1024字节长吧?还是更长?
    那用Session可照?
      

  5.   

    To:lovexyz(一瑞)   提示不一定要多长呀!我的意思是有这种可能!
      用Session ?一般我只是用Session保存一些必要的关键性信息,像传值之类的,一般不用,总觉得用多不好,所以尽量少用!