C# 后台POST数据到另一个页面

时间:2021-12-25 20:21:36
页面A  后台POST数据到页面B
然后跳转到页面B
因为要隐藏传送的数据 所以不能在跳转的url上参数传值
string data="123";
WebRequest req = WebRequest.Create("http://localhost/SCHXR.Route.TestUtils/Route.aspx");
                req.ContentType = "application/x-www-form-urlencoded";
                req.Method = "POST";

                byte[] bytes = System.Text.Encoding.UTF8.GetBytes(data);
                req.ContentLength = bytes.Length;

                System.IO.Stream os = req.GetRequestStream();
                os.Write(bytes, 0, bytes.Length);
                os.Close();
    Response.Redirect("B.aspx");


请问在B页面怎么接受我传过去的数据????

10 个解决方案

#1


建议使用  Server.Transfer("B.aspx")  这个是服务端的转发 Url上是看不到变化的
B页面使用Request["控件ID"] 或者在B页面使用   Page.PreviousPage 对象的FindControl方法

#2


Response.Redirect("B.aspx?a=1&b=2")
B.aspx:
string a = Requst["a"];
就能接收从A.aspx带过去的a了.

#3


Post传值的话:Request.Form["name"].
name:是表单中控件的名称

#4


都是在后台,还没有把结果回给后台,那再post感觉绕远了,用session传过去,用完之后马上清空就完了

#5


就是啊,用session存一下就行了吧,不用这么复杂吧

#6


按照你那个写法,data中应该包含参数名称,比如:
string data="name=123";

然后在B中就可以使用Request["name"]接收了

不过还是使用Server.Transfer("B.aspx?name=123")吧,这样跳转是直接在服务器端进行的,url不会发生变化

#7


Post Form到另一个页面

<asp:Button 
  ID="Button1" 
  PostBackUrl="~/TargetPage.aspx"
  runat="server"
  Text="Submit" />

被Post的页面有几种方法取得值,具体做法见:
Cross-Page Posting in ASP.NET Web Pages
http://msdn.microsoft.com/en-us/library/ms178139.aspx

#8


貌似有一种地址重写可以隐匿地址,有一个接口,IHttpModule ,BeginRequest事件里添加地址转换,然后server.transfer内部重定向过去

#9


同意1楼,用Server.Transfer,这样最简洁。
如果非要用httpwebrequest的话,B.ASPX页面接收参数就跟平常一样,用Request.Form["参数名"]来获取。

#10


用post过去可以接收!!
但是不能跳转过去
跳过去了流就改变!
得不到传送的数据!

System.IO.Stream s = Request.InputStream;
            int count = 0;
            byte[] buffer = new byte[1024];
            StringBuilder builder = new StringBuilder();
            while ((count = s.Read(buffer, 0, 1024)) > 0)
            {
                builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
            }

#1


建议使用  Server.Transfer("B.aspx")  这个是服务端的转发 Url上是看不到变化的
B页面使用Request["控件ID"] 或者在B页面使用   Page.PreviousPage 对象的FindControl方法

#2


Response.Redirect("B.aspx?a=1&b=2")
B.aspx:
string a = Requst["a"];
就能接收从A.aspx带过去的a了.

#3


Post传值的话:Request.Form["name"].
name:是表单中控件的名称

#4


都是在后台,还没有把结果回给后台,那再post感觉绕远了,用session传过去,用完之后马上清空就完了

#5


就是啊,用session存一下就行了吧,不用这么复杂吧

#6


按照你那个写法,data中应该包含参数名称,比如:
string data="name=123";

然后在B中就可以使用Request["name"]接收了

不过还是使用Server.Transfer("B.aspx?name=123")吧,这样跳转是直接在服务器端进行的,url不会发生变化

#7


Post Form到另一个页面

<asp:Button 
  ID="Button1" 
  PostBackUrl="~/TargetPage.aspx"
  runat="server"
  Text="Submit" />

被Post的页面有几种方法取得值,具体做法见:
Cross-Page Posting in ASP.NET Web Pages
http://msdn.microsoft.com/en-us/library/ms178139.aspx

#8


貌似有一种地址重写可以隐匿地址,有一个接口,IHttpModule ,BeginRequest事件里添加地址转换,然后server.transfer内部重定向过去

#9


同意1楼,用Server.Transfer,这样最简洁。
如果非要用httpwebrequest的话,B.ASPX页面接收参数就跟平常一样,用Request.Form["参数名"]来获取。

#10


用post过去可以接收!!
但是不能跳转过去
跳过去了流就改变!
得不到传送的数据!

System.IO.Stream s = Request.InputStream;
            int count = 0;
            byte[] buffer = new byte[1024];
            StringBuilder builder = new StringBuilder();
            while ((count = s.Read(buffer, 0, 1024)) > 0)
            {
                builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
            }