页面asp_net页面传值方式汇总

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

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

VoLLcloud6折限量,香港CMI云服务器三网直连-200M带宽

vollcloud LLC首次推出6折促销,本次促销福利主要感恩与回馈广大用户对于我们的信任与支持,我们将继续稳步前行,为广大用户们提供更好的产品和服务,另外,本次促销码共限制使用30个,个人不限购,用完活动结束,同时所有vps产品支持3日内无条件退款和提供免费试用。需要了解更多产品可前往官网查看!vollcloud优惠码:VoLLcloud终生6折促销码:Y5C0V7R0YW商品名称CPU内存S...

特网云57元,香港云主机 1核 1G 10M宽带1G(防御)

特网云官網特网云服务器在硬件级别上实现云主机之间的完全隔离;采用高端服务器进行部署,同时采用集中的管理与监控,确保业务稳定可靠,搭建纯SSD架构的高性能企业级云服务器,同时采用Intel Haswell CPU、高频DDR4内存、高速Sas3 SSD闪存作为底层硬件配置,分钟级响应速度,特网云采用自带硬防节点,部分节点享免费20G防御,可实现300G防御峰值,有效防御DDoS、CC等恶意攻击,保障...

湖北50G防御物理服务器( 199元/月 ),国内便宜的高防服务器

4324云是成立于2012年的老牌商家,主要经营国内服务器资源,是目前国内实力很强的商家,从价格上就可以看出来商家实力,这次商家给大家带来了全网最便宜的物理服务器。只能说用叹为观止形容。官网地址 点击进入由于是活动套餐 本款产品需要联系QQ客服 购买 QQ 800083597 QQ 2772347271CPU内存硬盘带宽IP防御价格e5 2630 12核16GBSSD 500GB​30M​1个IP...

asp net空间为你推荐
鬼武者3内存修改器谁有鬼武者3的修改器,要没毒的,简单好用的softbank手机日本softbank手机国内使用盗版win8.1升级win10盗版win10怎么升级到win10小说软件哪个好用免费看小说,哪个软件好,要免费的手动挡和自动挡哪个好自动挡手动挡哪个好?网校哪个好请问在网校排名中,哪个网校是最好的?想找一家最好的来选择啊?车险哪个好私家车买什么保险好播放器哪个好什么播放器好用qq空间登录qq空间如何登陆群空间登录手机如何登录腾讯qq群空间
美国虚拟主机购买 虚拟主机管理软件 vps是什么 免费注册网站域名 域名停靠一青草视频 linode 日本空间 网通ip 华为网络硬盘 微信收钱 php空间购买 免费高速空间 metalink 备案空间 重庆电信服务器托管 中国电信网络测速 iki 申请免费空间 114dns 阿里云邮箱登陆 更多