一个 asp.net 页面(在这里称之为 page1.aspx)在得到客户端请求并作一系列逻辑处理之后,需要重定向到另外一个页面(称之为 page2.jsp)中去,page2.jsp 是另外一个独立的系统,它在做完它的事情之后再会重定向到我的网站的一个页面(称之为 page3.aspx)。再在 page1.aspx 要传很多参数给 page2.jsp,所以决定用 post 方式,但是怎么才能够 Response.Redirect 时能过 post 方式把参数传给 page2.jsp 呢?谢谢!

解决方案 »

  1.   

    Redirect 本来就是get方式只能通过QUERYSTRING来传递参数
      

  2.   

    page2.jsp?id1='aaa'&id2='bbb'&id3='ccc'
    这样可以吗
      

  3.   

    用server.transfer传,相当于直接post到那个页面
      

  4.   

    url传送就是get方式,form里面默认是post
      

  5.   

    让这个页面page1.aspx自己submit()到page2.jsp上咯。window.onload=function() {
       // 提交到jsp的命令flag, 可以在服务端改写该隐藏域来控制重定向。
       if(document.all.hidCommandFlag.value == "1") {
           document.forms[0].action = "http://xxxxxx/page2.jsp";
           document.forms[0].submit();
       }
    }或者是你在服务端,用 WebRequest 直接请求jsp。
      

  6.   

    terry_12(大撒发射点):
    我想达到目的就行,不必非得用 Response.Redirect
    kagad(kagad):
    你说的这种方式就是 get,它最简单,但是我要传的参数可能会很多,而 http 的 get 方式有长度限制,太长了服务器可能不认,甚至出错fangxinggood(JustACoder):
    你说的这个办法应该是在客户端做的吧,但是我需要在服务端做不少事情,并且很多逻辑处理只能在服务端才能完成的
    Nick_Nick():
    你的办法可以一试,明天上班的时候再试,哦不,应该说是今天了。
      

  7.   

    可以的..
    Response.Redirect("xinxi.aspx?EMNO_LEVEL="+str1+"&&"+"CLS_CODE="+str2+"&&"+"emno="+str3);
      

  8.   

    用HttpWebRequest直接对page2.jsp发起Post请求,完成后再redirect到page3.aspx
      

  9.   

    Nick_Nick():
    按你的提示试了一下,但是有一个问题不好办,那就是从 page1.aspx 送给 page2.jsp 的参数不是完全从客户端得到的,在 page1.aspx 中要添加并修改一些参数值,但是 Request.Form.Add 方法 调用时抛出异常说 Form 是只读的gOODiDEA(无语):
    page3.aspx 是由运行在其它平台的 page2.jsp 重定向的,这个URL是从 page1.aspx传过去的参数决定的。按你的说法我真不知道怎么做。
      

  10.   

    这个,我就不清楚了
    要不然,你自己构造一个httpRequest,然后post到jsp?不过这样就太复杂了
      

  11.   

    page3.aspx 是由运行在其它平台的 page2.jsp 重定向的,这个URL是从 page1.aspx传过去的参数决定的。按你的说法我真不知道怎么做。
    ///如果对于支持JS的网站系统,可以这样,在Page1.aspx用Form去Post,POST的地址为Page2.Jsp,然后通过Ajax一类的处理方式在客户端得到服务器处理后的数据再提交。
      

  12.   

    asp.net,jsp都用到了。直接在js里写代码可以实现
      

  13.   

    gOODiDEA(无语)、tete(小特):page1.aspx post 到 page2.jsp 的参数大多是由服务端生成的,客户端不知道
      

  14.   

    客户端先把数据提交给服务器端,再根据服务器端返回的数据Post给Page2.jsp,参见一个Ajax.NET的例子:http://www.ajaxpro.info/Examples/Special/keypress.aspx
      

  15.   

    给你个建议,在page1.aspx里面自己用response.write自己在另写一个form,然后用javascript传递就好了阿我的例子:
     Response.Write("<form name=form1 action=checklogin.asp method=post>");
    Response.Write("<input type=hidden name=check1 value=1>");
    Response.Write("<input type=hidden name=username value='"+txtUserName.Text+"'>");
    Response.Write("<input type=hidden name=password value='"+txtPassword.Text+"'>");
    Response.Write("</form>");
    Response.Write("<scr"+"ipt language='javascript'>form1.submit();</scr"+"ipt>");
    我就是这么将asp.net和asp和起来用的,不知道能不能帮你呢?
      

  16.   

    兄弟
    想不到你也是这个问题啊
    我也是的
    刚还发了贴
    我郁闷了一天
     在MSDN中查的时候
    觉得TRANFER挺好的 
    但是 哪个
    IHttpHandler类还不很理解
    郁闷
      

  17.   

    方法一:
    在page1.aspx服务端通过HttpWebRequest将数据传递给page2.jsp,然后获取page2.jsp的输出,返回给浏览器。方法二:
    在page1.aspx服务端将所有需要post的数据生成一个form,然后直接用js提交。(Redirect方法其实也只是向浏览器返回一个302消息罢了)
    比如生成如下的html:
    <html><body><form><input name="name1" value="value1">...</form><script>document.forms[0].submit();</script></body></html>另:我记得Server.Transfer方法只能在本站内使用。
      

  18.   

    我常用__doPostBack(),不知道是不是规范,呵呵!
    就是加入一个LinkButton,把上面的文字都删除,这样客户端脚本有这个控件,界面上还显示不出来。__doPostBack()第一个参数用它的clientID,第二个参数比较麻烦,需要装箱。
      

  19.   

    忘了一句:然后在这个LinkButton的Onclick事件中处理就可以了。
      

  20.   

    一个可以用HttpWebRequest
    还有可以用xmlhttp
    using MSXML2;
    string url="xxxx";
    MSXML2.XMLHTTP xmlhttp=new MSXML2.XMLHTTPClass();
    xmlhttp.open("post",url,false,null,null);
    xmlhttp.send("");
    string valid=xmlhttp.responseText.ToString();
      

  21.   

    按你的需求,我看自己在后太写个form,然后post比较好,不过这种方式我没测试过
      

  22.   

    看了大家的建议,觉得还是在客户端用 post 比较合理,处理也简单用 HttpWebRequest 的方法可能行,但是太复杂了点
      

  23.   

    你是不是在.net中做网银充值得啊!我是做这个得遇到这个问题看到了你得帖子!嘿嘿