页面asp_net页面传值方式汇总

asp net 3 5  时间:2021-01-29  阅读:()

A SP.NE T页面之间传递值的几种方式

页面传值是学习asp.net初期都会面临的一个问题总的来说有页面传值、存储对象传值、ajax、类、model、表单等。但是一般来说常用的较简单有QueryStringSes sionCookiesApp lication Server.Transfer。

一、 QueryString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

二、 Session. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

三、 Cookie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

四、Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

五、 S erver.Transfer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

六、表单提交. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

七、 viewstate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

八、 PostBac kUr l()方法类似于form的post方式和s erver.trans fer方式错误未定义书签。

一、 QuerySt ring

QueryString是一种非常简单的传值方式他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时可以使用这个方法。但是对于传递数组或对象的话就不能用这个方法了。

这种方法的优点 1.使用简单对于安全性要求不高时传递数字或是文本值非常有效。

这种方法的缺点 1.缺乏安全性 由于它的值暴露在浏览器的URL地址中的。

2.不能传递对象。

使用方法 1.在源页面的代码中用需要传递的名称和值构造URL地址。

2.在源页面的代码用Respons e.Redirect(URL);重定向到上面的URL地址中。

3.在目的页面的代码使用Request.QueryString["name"];取出URL地址中传递的值。

例子 (1)a.aspx //发送页面private void Button1_Click(object sender,System.EventArgs e)

{string s_url;s_url="b.aspx?name="+Label1.Text;

Response.Redirect(s_url);

}

(2)b.aspx //接收页面private void Page_Load(object sender,EventArgs e)

{

Labe l2.Text=Reques t.QueryString[];

}

想必这个肯定是大家使用中最常见的用法了其操作与Application类似作用于用户个人所以过量的存储会导致服务器内存资源的耗尽。

优点 1.使用简单不仅能传递简单数据类型还能传递对象。

2.数据量大小是不限制的。

缺点 1.在Session变量存储大量的数据会消耗较多的服务器资源。

2.容易丢失。

使用方法 1.在源页面的代码中创建你需要传递的名称和值构造Session变量:Session["Name"]="Value(Or Object)";

2.在目的页面的代码使用Session变量取出传递的值。 Result =Session["Nmae"]

注意 session不用时可以销毁它销毁的方法是

清除一个 Ses sion.Remove(;

清除所有 Session.Clear();

例子 (1)a.aspx //发送页面private void Button1_Click(object sender,System.EventArgs e)

{

Ses sion["name"]=Labe l.Text;

} (2)b.aspx //接收页面private void Page_Load(object sender,EventArgs e)

{string name;name=Session["name"].ToString();

}

三、 Cookie

这个也是大家常使用的方法 Cookie用于在用户浏览器上存储小块的信息保存用户的相关信息 比如用户访问某网站时用户的ID用户的偏好等用户下次访问就可以通过检索获得以前的信息。所以Cookie也可以在页面间传递值。 Cookie通过HTTP头在浏览器和服务器之间来回传递的。 Cookie只能包含字符串的值如果想在Cookie存储整数值那么需要先转换为字符串的形式。

与Session一样其是什对每一个用户而言的但是有个本质的区别即Cookie是存放在客户端的而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

优点 1.使用简单是保持用户状态的一种非常常用的方法。比如在购物网站中用户跨

多个页面表单时可以用它来保持用户状态。

缺点 1.常常被人认为用来收集用户隐私而遭到批评。

2.安全性不高容易伪造。

写值

Response.Cookies["hsh"] ["a"] = TextBox1.Text;

Response.Cookies["hsh"] ["b"] = TextBox2.Text;

读值if (Request.Cookies["hsh"] != null)

{

TextBox1.Text = Request.Cookies["hsh"] .Values["a"] .ToString() ;

TextBox2.Text = Request.Cookies["hsh"] .Values["b"] .ToString() ;

}

四、Application

Application对象的作用范围是整个全局也就是说对所有用户都有效。它在整个应用程序生命周期中都是有效的类似于使用全局变量一样所以可以在不同页面中对它进行存取。它和Session变量的区别在于前者是所有的用户共用的全局变量后者是各个用户独有的全局变量。

可能有人会问既然所有用户都可以使用application变量那他可以用在什么场合呢这里举个例子 网站访问数。多个请求访问时都可以对它进行操作。

优点 1.使用简单消耗较少的服务器资源。

2.不仅能传递简单数据还能传递对象。

3.数据量大小是不限制的。

缺点 1.作为全局变量容易被误操作。所以单个用户使用的变量一般不能用application。

使用方法

1.在源页面的代码中创建你需要传递的名称和值构造Applic ation变量:

App lication["Nmae"]="Value(Or Object)";

2.在目的页面的代码使用Application变量取出传递的值。

Result=App lic ation["Nmae"]

注意常用loc k和unlock方法用来锁定和解锁为了防止并发修改。

例子 (1)a.aspx //发送页面private void Button1_Click(object sender,System.EventArgs e)

{

App lic ation["name"]=Label1.Text;

}

(2)b.aspx //接收页面private void Page_Load(object sender,EventArgs e)

{string name;

App lic ation.UnLock();

}

五、 Server.Transfer

这个才可以说是面象对象开发所使用的方法其使用Server.Transfer方法把流程从当前页面引导到另一个页面中新的页面使用前一个页面的应答流所以这个方法是完全面象对象的简洁有效。

S erver.Transfer是从当前的ASPX页面转到新的ASPX页面服务器端执行新页并输出,在新页面中通过Context.Handler来获得前一个页面传递的各种数据类型的值、表单数据、QueryString.由于重定向完全在服务器端完成所以客户端浏览器中的URL地址是不会改变的。调用Server.Transfer时当前的ASPX页面终止执行执行流程转入另一个ASPX页面但新的ASPX页面仍使用前一ASPX页面创建的应答流。ps 比较S erver.Transfer和Respons e.Redirect的区别。

(1)Server.Transfer在服务器端完成所以客户端浏览器中的URL地址是不会改变的 Respons e.Redirect是客户端完成 向服务器端提出新的页面处理请求所以客户端浏览器中的URL地址是会改变的。

(2)Server.Transfer在服务器端完成,不需要客户端提出请求减少了客户端对服务器端提出请求。

(3)S erver.Trans fer只能够转跳到本地虚拟目录指定的页面,也就是工程项目中的页面而Respons e.Redirect则十分灵活,可以跳转到任何URL地址。

(4)S erver.Trans fer可以将前一个页面的各种类型的值传到新的页面Response.Redirect则只能借助URL中带参数或是结合上面四种办法把各种类型的值传到新的页面。

优点 1.直接在服务器端重定向使用简单方便减少了客户端对服务器端提出请求。

2.可以传递各种数据类型的值和控件的值。

缺点 1.客户端浏览器中的URL地址是不改变会导致在新的页面可能出现一些意想不到的问题。比如如果源页面和目的页面不在同一个虚拟目录或其子目录下那么使用相对路径的图片、超链接都会导致错误的指向。

//发送页面public partial class transfer_write : System.Web.UI.Page

{public string param1

protected void Button1_Click(object sender, EventArgs e)

{

Server.Transfer("transfer_read.aspx", true) ;

}

}

//接收页面方法1 利用类的静态属性 transfer_write newWeb; //实例前一个页面窗体 newWeb = (transfer_write)Context.Handler;

TextBox1.Text = newWeb.param1 ;

TextBox2.Text = newWeb.param2;

//方法2 类似于表单的post方式不用设置静态属性 推荐这种方式,安全简单

TextBox1.Text = Request.Form["TextBox1"] .ToString() ;

六、表单提交

表单form的提交有两种方式一种是get的方法一种是post的方法.看下面代码,理解两种提交的区别:

Get方式

1、 写值页面

<form id="form1" method="get" action="from_read.aspx">

<input id="Text1" name="name" type="text" />

<input id="Text2" name="age" type="text" />

<input id="Checkbox1" name="checkbox" type="checkbox" value="1" />1

<input id="Radio1" name="radio" type="radio" value="2" />2

<input id="Submit1" type="submit" value="get_submit" />

</form>

2、 读值页面

//get方式if (Request["name"] != null)

{

TextBox1.Text = Request["name"] .ToString() ;

}if (Request["age"] != null)

{

TextBox2.Text = Request["age"] .ToString() ;

}

Post方式

1、写值

<form id="form2" method="post" action="from_read.aspx">

<input id="Text3" name="name" type="text" />

<input id="Text4" name="age" type="text" />

<input id="Checkbox2" name="checkbox" type="checkbox" value="1" />1

<input id="Radio2" name="radio" type="radio" value="2" />2

<input id="Submit2" type="submit" value="post_submit" />

</form>

3、读值

//post方式if (Request.Form["name"] != null) {

TextBox1.Text = Request.Form["name"] .ToString() ;

}if (Request.Form["age"] != null)

{

TextBox2.Text = Request.Form["age"] .ToString() ;

}

表单提交中get和p os t方式的区别归纳如下几点

1. get是从服务器上获取数据 post是向服务器传送数据。

2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中值和表单内各个字段一一对应在URL中可以看到。 post是通过HTTP post机制将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

3.对于get方式服务器端用Reques t.QueryString获取变量的值对于po st方式服务器端用Request.Form获取提交的数据。

4.get传送的数据量较小不能大于2KB。 post传送的数据量较大一般被默认为不受限制。但理论上 IIS4中最大量为80KB IIS5中为100KB。

5.g et安全性非常低 p os t安全性较高。但是执行效率却比P os t方法好。

建议

1、 g et方式的安全性较P os t方式要差些包含机密信息的话建议用P o st数据提交方式

2、在做数据查询时建议用Get方式而在做数据添加、修改或删除时建议用Post方式

利用form的隐藏域

隐藏域不会显示在用户的浏览器中 一般是在页面中加入一个隐藏控件 与服务器进行交互时把值赋给隐藏控件并提交给下一页面。隐藏域可以是任何存储在网页中的与网页有关的信息的存储库。使用隐藏域存入数值时用 hidden控件.value=数值取出接收数值时用变量=hidden控件.value。使用隐藏域的优点是实现简单 隐藏域是标准的HTML控件不需要复杂的编程逻辑。隐藏域在页上存储和读取不需要任何服务器资源几乎所有浏览器和客户端设备都支持具有隐藏域的窗体。缺点是存储结构少仅仅支持简单的数据结

构存储量少因为它被存储在页面本身所以无法存储较大的值而且大的数据量会受到防火墙和代理的阻止。

例

写值

<form id="form2" method="post" action="from_read.aspx">

<input id="Hidden1" name="hide" type="hidden" value="2"/>

</form>

读值if (Request.Form["hide"] != null)

{

TextBox2.Text = Request.Form["hide"] .ToString() ;

}

七、 viewst ate

ViewState不是跨页面的.session是会话级的.application是应用程序级的.而viewstate则是页面级的.也就是说出了这个页面.该viewstate不能再被访问.可以保存任何对象.如:page_load中: if( !IsPostBack)ViewState["test"]=0;

在页面的某个button事件中: inttest=Convert.ToInt32(ViewState["test"] .ToString() ) ;

这时可以直接从viewstate中拿出值来.

八、 PostBackUrl()方法类似于form的post方式和server.transfer方式default.aspx页面

Code

1 、发送页面

<asp:Butto n ID="Butto n1"Runat="server"Text="PostToAnotherPage"PostBackUrl="~/Default2.aspx" />

2、接收页面default2.aspx页面

Codeif(PreviousPage!=n u l l)

{ TextBox textBox1 =

(TextBox)P revi o usPage.Fi ndControl("TextBox1");

Respo nse.wri te(te xtBo x1 .Te xt ); }

创梦网络-四川大带宽、镇江电信服务器云服务器低至56元

达州创梦网络怎么样,达州创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以备案,属于一手资源,高防机柜、大带宽、高防IP业务,一手整C IP段,四川电信,一手四川托管服务商,成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快,直连省骨干,大网封UDP,无视UDP攻击,机房集群高达1.2TB,单机可提供1...

DMIT:新推出美国cn2 gia线路高性能 AMD EPYC/不限流量VPS(Premium Unmetered)$179.99/月起

DMIT,最近动作频繁,前几天刚刚上架了日本lite版VPS,正在酝酿上线日本高级网络VPS,又差不多在同一时间推出了美国cn2 gia线路不限流量的美国云服务器,不过价格太过昂贵。丐版只有30M带宽,月付179.99 美元 !!目前美国云服务器已经有个4个套餐,分别是,Premium(cn2 gia线路)、Lite(普通直连)、Premium Secure(带高防的cn2 gia线路),Prem...

HostKvm:夏季优惠,香港云地/韩国vps终身7折,线路好/机器稳/适合做站

hostkvm怎么样?hostkvm是一家国内老牌主机商家,商家主要销售KVM架构的VPS,目前有美国、日本、韩国、中国香港等地的服务,站长目前还持有他家香港CN2线路的套餐,已经用了一年多了,除了前段时间香港被整段攻击以外,一直非常稳定,是做站的不二选择,目前商家针对香港云地和韩国机房的套餐进行7折优惠,其他套餐为8折,商家支持paypal和支付宝付款。点击进入:hostkvm官方网站地址hos...

asp net 3 5为你推荐
电脑内存的作用电脑内存条的作用日本软银集团请介绍一下日本软银。向那些中国企业投资过?网页传奇哪个好玩网页传奇哪个好玩 现在的传奇跟以前玩的都不一样了 总感觉没以前的有激情了电陶炉和电磁炉哪个好电磁炉和电陶炉哪个好? 电磁炉和电陶炉的具体区别qq空间登录qq空间如何登陆qq空间登录电脑怎么用电脑登陆手机版QQ空间yy空间登录玩空间游戏怎样1直是正在登录中yy空间登录yy空间怎么上传照片?yy空间登录怎样进入YY主播的空间电信10000宽带测速电信宽带速度
根域名服务器 免费网站域名注册 安徽双线服务器租用 独享100m dns是什么 winscp godaddy主机 优惠码 mediafire下载 台湾谷歌网址 小米数据库 全站静态化 php空间推荐 paypal注册教程 免费网页空间 美国独立日 空间租赁 网购分享 万网注册 大化网 更多