我用StringBuilder拼接了一段html代码,然后用Response.Write(sb.ToString());
本意是想完成一个操作后在新的页面上显示成功或失败信息的,可是操作后却没反应,没看到有新的页面。
我看别人的代码不是用StringBuilder拼接,却成功,满奇怪的。
请教一下。

解决方案 »

  1.   

    是不是你跳转有问题?
    Response.Write完了后记得Response.End一下
      

  2.   

    有,
    我是
    Response.clear();
    Response.Write(sb.ToString());
    Response.End();
      

  3.   

    StringBuilder builder = new StringBuilder();  builder.Append("<html>");
      builder.Append("<head>");
      ....
      builder.Append("</body>");
      builder.Append("</html>");writer.Write(builder.ToString());
      

  4.   

    我断点追踪到Response.Write(sb.ToString());
    sb.ToString是正常的html代码,不过没输出在新的页面上。
      

  5.   


    StringBuilder builder = new StringBuilder();   builder.Append(" <html>"); 
      builder.Append(" <head>"); 
      .... 
      builder.Append(" </body>"); 
      builder.Append(" </html>"); Response.clear(); 
    Response.Write(sb.ToString()); 
    Response.End();
      

  6.   

    我写在一个cs文件的statusMsg类里,然后在其他cs页面调用statusMsg.showStatus(...),根据传的参数动态构建html代码。
      

  7.   

    <div> 
    <% A(); %> 
    </div> 
     
    protected void A() 

    Response.Write(""); 
      

  8.   

    我用firebug调度过了,返回来的http头是有write出来的内容,可是在前台页面上没显示。我是用ajax调用服务器端方法,然后再response.write的。可能跟这有关吧。
      

  9.   


    System.Web.HttpContext.Current.Response.Cookies["MessageValue"].Value = Serializable_Message(Serializable_Message(msg), true);
    System.Web.HttpContext.Current.Response.Redirect(string.Format("~/manage/Messages.aspx?OPID={0}", StringHelper.RndNum(5)));
    System.Web.HttpContext.Current.Response.End();我把操作提示的信息封装到一个StatusMsg类中,msg是一个实例对象,然后序列化到cookies,再进行跳转,可是页面上没有跳转到指定的页面。Messages.aspx页面代码中有反序列化提示信息,绑定到页面上的。可就是不显示。
    我用firebug调试了响应头信息查看源代码
    Server ASP.NET Development Server/8.0.0.0
    Date Sat, 20 Mar 2010 05:08:11 GMT
    X-AspNet-Version 2.0.50727
    Cache-Control private
    Content-Type text/html; charset=utf-8
    Content-Length 35969
    Connection Close   //这里是不是出问题了?
    请求头信息查看源代码
    Host localhost:1042
    User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6
    Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language zh-cn,zh;q=0.5
    Accept-Encoding gzip,deflate
    Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7
    Keep-Alive 300
    Connection keep-alive
    Referer http://localhost:1042/manage/sys/Admin_Add.aspx
    Cookie MessageValue=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In6NX/PX+DV+jf+bHvzE8xv9WvTP0+OmKZr2q7Yoi/Z6lP5kXjdFtfxsd7yD/0bpybps13X+2TJft3VWjtKX60lZTH+v/PpN9TZffrZcl+WvC5C/bQBp/LrN2nXzRXPx69J3v97i959Us+vfcPH7F9Nq+fu316ucPsIP+qjOqYPlui4T/D4r6nza/pq/DqHbgXiGV9/QO8D7N/g18e+v92vTP7/1f/F3/r3/+R/zF/2Xf8Nf/F/+SX/Ef/4n/1n/xR/1J/3nf8xf+Ov+HzTUIQjA99e/zMp1/vv//r/GrwVITJ1fD7j+ls11c/d4tiiWv/9zenecNat3v+Zv+P8AjYsnbD4BAAA=; userauth=AB00A2A2954D2F1A5D0D5309B0401A6D3E2B7322B1E34D671F5DDE35795BDE6F6AA91E1C8EB1A19122DCC4E269975FA205B150A9BF525FD80DD127E6F182F966282A2DB725EA082463A90212E3452A75; Status-MessageValue=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In6NX/PX+DV+jf+bHvzE8+vhl3/410vpedxmkzJPm/a6zD/76KqYtfNHn97/3Q/neXExbx/tHuys3h1+lKaTqp7l9Wcf7XyUZmVxsfzso2m+bPP6o3Sal2WzyqbF8uKzj3bl71U2m/Hf9+nvMmuazz5a5E2TXeS/P/f30dFvzH3X5ts3r37/J59/dPS4nZlPmutmkRXL33+ZXRYfGfwUq3sHjNS0QseEyt5HR//Fn/rH/2d//5/3X/69f+p/8Rf8eY/vtrOj35j+rY+6Xfz+ZdG0QT/4gD5dvu0NTPvc3/nd6YVicWG+zybNopjNaBRpU08JqbZdPbp7t6ymWTmvGiLazv7e3ePV6vd/M89p2HcxjrvFgkbf3P1CyHBa11U9vijOP/Ioe/R4Uqd3zb8YRBTPo8fn1bLF6Kv6szqf6dj/iz/xT/yv/sG/6X/8+/6cx3fxPVM4fbwu5Rf+oyyOHoNidrqp6+2rOls9mtR5Rr/S34f8If5+y5++3c7K8hAQt5viB/mj3d3xfVD/6L/46//S//zP+6v+s7/rr/8v/vq/5L/8e/7B//Kv+mP/0z/oD3l8F/AJeerK9isdZ+m8zs8/+/ins8usmdbFqn00pzFV9fV4kk3fbt05/DgY2Uc0tI+O/qt/8E/7z//cv+A/+7v+mP/s7/qD/su/56/UsT2+mx39wuWkWR32/zUdfXQ8WxD/PKc+xlmzehfSzYf+X/4Nf/F/+Sf9ER5oD/3Hd4mCMhfgJyHqXWbio9/4N/x/AHUmdg1aAwAA请教!
      

  10.   

    AJax调用服务端得话
        </contenttemplate>
                    <Triggers> 
                    <asp:PostBackTrigger ControlID="Button" /> 
                    </Triggers>
        </asp:UpdatePanel>
    加个触发器试试
      

  11.   


    Ajax可能确实不适合于你的编程习惯。
      

  12.   


    为啥说不适合我的编程习惯?我以后的工作与Ajax有关的。
      

  13.   


    虽说在页面源代码里看不到,但是firebug调试的时候响应头信息里确实有builder.ToString()后的内容。只是不知为什么没显示出来。
    StatusMsg msg2 = new StatusMsg();
    try
    {
         ...略        
         AdminControl.InsertByTrans(model, emodel, ars);
         msg2.M_Body = "添加管理员成功";
         msg2.M_IconType = Icon_Type.OK;
         msg2.M_Type = 1;
         msg2.M_Url = "sys/Admin_List.aspx";
         msg2.M_Redirect = true;
    }
    catch (System.Exception ex)
    {
         msg2.M_Body = ex.Message.Replace("\\n", "<br>");
         msg2.M_IconType = Icon_Type.OK;
         msg2.M_Type = 1;
         msg2.M_Url = "sys/Admin_List.aspx";
         msg2.M_Redirect = false;
    }
    PageMsg(msg2); //这句放到最后是为了避免产生"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值”的异常。/// <summary>
    /// 提示信息
    /// </summary>
    /// <param name="msg">信息提示类</param>
    protected void PageMsg(StatusMsg msg)
    {
        EventMessage.ShowMessage(msg);
    }/// <summary>
    /// 提示信息
    /// </summary>
    /// <param name="msg">信息提示类.</param>
    internal static void ShowMessage(StatusMsg msg)
    {
        System.Web.HttpContext.Current.Response.Cookies["MessageValue"].Value = Serializable_Message(Serializable_Message(msg), true);
        System.Web.HttpContext.Current.Response.Redirect(string.Format("~/manage/Messages.aspx?OPID={0}", StringHelper.RndNum(5)));
         System.Web.HttpContext.Current.Response.End();
    }现在代码是这样的。我断点调试的时候,在Messages.aspx是能反序列化得到StatusMsg类的实例的。