页面asp_net页面传值方式汇总

asp net 空间  时间:2021-01-22  阅读:()

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 ); }

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

gcorelabs远东khabarovsk伯力Cloud云服务器测评,告诉你gcorelabs云服务器怎么样

说明一下:gcorelabs的俄罗斯远东机房“伯力”既有“Virtual servers”也有“CLOUD SERVICES”,前者是VPS,后者是云服务器,不是一回事;由于平日大家习惯把VPS和云服务器当做一回事儿,所以这里要特别说明一下。本次测评的是gcorelabs的cloud,也就是云服务器。 官方网站:https://gcorelabs.com 支持:数字加密货币、信用卡、PayPal...

PhotonVPS:$4/月,KVM-2GB/30GB/2TB/洛杉矶&达拉斯&芝加哥等

很久没有分享PhotonVPS的消息,最近看到商家VPS主机套餐有一些更新所以分享下。这是一家成立于2008年的国外VPS服务商,Psychz机房旗下的站点,主要提供VPS和独立服务器等,数据中心包括美国洛杉矶、达拉斯、芝加哥、阿什本等。目前,商家针对Cloud VPS提供8折优惠码,优惠后最低2G内存套餐每月4美元起。下面列出几款主机配置信息。CPU:1core内存:2GB硬盘:30GB NVm...

asp net 空间为你推荐
涡轮增压和自然吸气哪个好涡轮增压和自然吸气哪个更好,优缺点是什么?手机浏览器哪个好手机什么浏览器最好用?ps软件哪个好Photoshop哪个软件好用点?手机管家哪个好手机管家哪个好腾讯空间登录QQ空间登录dns服务器设置DNS服务器怎么设置??月抛隐形眼镜月抛隐形眼镜大概多少钱10个比1688便宜的拿货网1688货源怎么样?订机票最便宜的网站在什么网买的机票最便宜?很便宜在淘宝上买东西什么时候最便宜?
中国域名注册 免费域名空间 重庆网站空间 北京域名注册 域名注册使用godaddy 北京租服务器 google电话 a2hosting 空间打开慢 浙江独立 777te 电子邮件服务器 200g硬盘 卡巴斯基试用版 网游服务器 根服务器 厦门电信 联通网站 监控服务器 秒杀品 更多