Post和Get的区别(兼谈页面间传值的方式)

转载 2006年06月12日 11:09:00

Post和Get的区别(兼谈页面间传值的方式)

从一个页面转向另一个页面的请求方式有两种,Post和Get.

如果从原理上来探究他们的区别,涉及到Http传输协议的细节,这样深究下去,就成华为人干的事了,有空可以请教一下华为高人,我一个做企业软件的实在没那么多时间也没必要去研究那些东西,所以就看一下表象吧。

所有的人都知道如下区别:
1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.
3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。

我们的form表单的method方法,有两个,post,get.它在页面传值的时候的区别也就是上面提到的三点.

先来看一下post方法.

这个方法在asp时代应该跟程序员打交道很多的,因为那时候没有现在的ViewState,每个页面要恢复原来的状态,都要将页面Post给自身,然后挨个取值,重新赋值.现在这些琐碎的事情都让ViewState代劳了.所以将页面post给自身的动作,在某种程度上已经被Asp.net的程序员们忘却了,所以Post也就被大部分的忽视了,这就是技术进步的双刃剑,带来方便的同时,蒙上你的眼睛。

ViewState必须包含在<form runat="server">的窗体下,而只要包含了"runat="server""的标志,就甭想Post到其他页面中去,为什么?老盖说,我的ViewState是保存当前页面状态的,你要转到其他页面,他说,不行,**不认识的参数.如果想Post一个窗体,咋办?有四种方式可供选择.

1.在页面上新建一个form,不要加上runat="server"的标志,当然在这个窗体下的控件也就不用想用Viewstate来传值了.当在其他有runat="server"的窗体的中的按钮事件中,手动调用新建form的submit() 函数.

传送页面代码如下:

 

<!--html代码-->
<form id="Form1" method="post" runat="server">
            
<input id="btnTransfer" type="button"  onclick="post();" runat="server">
            
<input type="text" runat="server" id="SourceData">
        
</form>
        
<form id="forPost" method="post">
            
<input type="text" runat="server" id="SourceData2">
        
</form>

<!--Script代码-->
<script language="javascript">
            
function post()
            {
                forPost.action
="DestinationPage.aspx";
                forPost.submit();
            }
        
</script>

 


接收页面

 

string a=Request.Form["SourceData2"].ToString();

 


2.通过Session取值,在一个页面中赋值,在其他页面中共享,这个方式也被广泛应用,个人不倾向于用这种方式,我怕造成Session值的混乱无序,Session用来存一些公共的东西已经累得够呛了。

3.通过Context传值,在传送页面之前,将需要传递到其他页面的值存在Context中。示例代码如下:

传送页面

 

//点击某个button时触发
private void btnTransfer_ServerClick(object sender, EventArgs e)
        
{
            Context.Items[
"SourceData"]=SourceData.Value;
            Server.Transfer(
"DestinationPage.aspx");
        }

 


接收页面

 

string a=Context.Items["SourceData"].ToString();

 


4.通过Server.Transfer的方式。
这个方式在方法三种已经用到了,不过可以在调用页面为要传递到被调用页面的值创建属性(当然可以直接将它设成public),这样就可以在其他页面访问了。

传送页面

 

//要传送的值
private 
System.Web.UI.HtmlControls.HtmlInputText SourceData;

public string getSourceData
{
  
get
  
{
    
return SourceData.Value;
  }

}


//传送页面
Server.Transfer("DestinationPage.aspx");

 


接收页面

 

private SourceClass sourcePage;

sourcePage
=(SourceClass)Context.Handler;
            
string aa=sourcePage.getSourceData;

 


以上就是Post的在不同页面传递数据的方式了。
下面是get方法
我常用的是  传送页面

 

string aa=SourceData.Value;
            
string bb=SourceData.Value;

            
string url="DestinationPage.aspx?parameter1="+aa+"&parameter2="+bb;
            Response.Redirect(url,
false);

 


接收页面

 

string aa=Request.QueryString["parameter1"].ToString();
            
string bb=Request.QueryString["parameter2"].ToString();

 


至于 Response.Redirect(url,false)里的false都是Response.End()这个方法惹的祸,老盖说,写成false就好了,因为默认是true。我都转向其他页面了,还不让我终止原来页面的响应,BT!

相关文章推荐

Post和Get的区别(兼谈页面间传值的方式)

Post和Get的区别(兼谈页面间传值的方式) 从一个页面转向另一个页面的请求方式有两种,Post和Get. 如果从原理上来探究他们的区别,涉及到Http传输协议的细节,本文不加探究,只讨论...
  • Samsone
  • Samsone
  • 2013年07月24日 10:30
  • 1779

ajax与服务器传值有两种方式:get 和post的区别

ajax与服务器传值有两种方式:get 和post,这两种传值方式到底有什么区别呢?...

ASP.NET页面间POST和GET传值

ASP.NET页面间的传值有很多种方式,下面介绍一种最常见的传值方式,就是利用HttpContext传值。 分两种情况: 1、当表单提交的时候(POST) 页面1:userName.aspx ...

原生ajax post 和get 方式传值

原生ajax post 和get 方式传值
  • lamp113
  • lamp113
  • 2016年02月29日 21:32
  • 6346

asp.net页面的提交方式POST和GET区别及用法?

asp.net页面的提交方式POST和GET有什么区别?1 get是从服务器上获取数据,post是向服务器传送数据。(1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方...
  • hwj528
  • hwj528
  • 2015年11月26日 10:21
  • 729

jsp中post和get传输方式的区别

  • 2011年05月07日 11:07
  • 849B
  • 下载

ASP.NET不用页面跳转方式的区别及页面间传值方法

本文转自:http://www.cnblogs.com/csharp4/archive/2010/05/14/1735745.html 1 response.redirect 这个跳转页面的方法跳转...

浅谈HTTP中Get与Post的区别

  • 2014年12月29日 12:35
  • 47KB
  • 下载

Rest 服务Get和Post的参数传值

 1. get是从服务器上获取数据,post是向服务器传送数据。 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。po...
  • XMM_1030
  • XMM_1030
  • 2014年02月11日 10:34
  • 21013
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Post和Get的区别(兼谈页面间传值的方式)
举报原因:
原因补充:

(最多只允许输入30个字)