当前位置:编程学习 > 网站相关 >>

小议Post与Get方法提交

从一个页面转向另一个页面的请求方式有两种,Post和Get.
所有的人都知道如下区别:
1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.
3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。
下面就说说页面之间传值的方法:我们的form表单的method方法,有两个,post,get.它在页面传值的时候的区别也就是上面提到的三点.
 
先来看一下post方法.
1.在页面上新建一个form,不要加上runat="server"的标志,当然在这个窗体下的控件也就不用想用Viewstate来传值了.当在其他有runat="server"的窗体的中的按钮事件中,手动调用新建form的submit() 函数.
传送页面代码如下:
 
[html] view plaincopyprint?
<form id="forPost" method="post" action="Default2.aspx">  
<input type="text" id="SourceData2" runat="server" /> 
<input id="Button1" type="button" onclick="post();" value ="post提交" /> 
</form> 
 
接收页面  
using System;  
using System.Collections;  
using System.Configuration;  
using System.Data;  
using System.Linq;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.HtmlControls;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Xml.Linq;  
 
public partial class ExpedientInfront_ExpCompany_Default2 : System.Web.UI.Page  
{  
protected void Page_Load(object sender, EventArgs e)  
{  
post();  
}  
public void post()  
{  
Response.Write(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方法  
我常用的是 传送页面  
aspx页面  
 
<form id="Form1" runat="server"> 
<input type="text" runat="server" id="SourceData" /> 
<asp:Button ID="btnTransfer" runat="server" Text="get提交" nclick="btnTransfer_Click" />  
</form>  
aspx.cs代码:  
protected void btnTransfer_Click(object sender, EventArgs e)  
{  
string bb = this.SourceData.Value;  
string url = "Default2.aspx?aa=" + bb;  
Response.Redirect(url);  
}  
接收页面:  
using System;  
using System.Collections;  
using System.Configuration;  
using System.Data;  
using System.Linq;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.HtmlControls;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Xml.Linq;  
 
public partial class ExpedientInfront_ExpCompany_Default2 : System.Web.UI.Page  
{   
protected void Page_Load(object sender, EventArgs e)  
{  
get();  
}  
public void get()  
{  
Response.Write(Request.QueryString["aa"].ToString());  
}  
}  
<form id="forPost" method="post" action="Default2.aspx">
<input type="text" id="SourceData2" runat="server" />
<input id="Button1" type="button" onclick="post();" value ="post提交" />
</form>
 
接收页面
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
 
public partial class ExpedientInfront_ExpCompany_Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
post();
}
public void post()
{
Response.Write(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 Sour
补充:Web开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,