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

legionbox:美国、德国和瑞士独立服务器,E5/16GB/1Gbps月流量10TB起/$69/月起

legionbox怎么样?legionbox是一家来自于澳大利亚的主机销售商,成立时间在2014年,属于比较老牌商家。主要提供VPS和独立服务器产品,数据中心包括美国洛杉矶、瑞士、德国和俄罗斯。其中VPS采用KVM和Xen架构虚拟技术,硬盘分机械硬盘和固态硬盘,系统支持Windows。当前商家有几款大硬盘的独立服务器,可选美国、德国和瑞士机房,有兴趣的可以看一下,付款方式有PAYPAL、BTC等。...

数脉科技:六月优惠促销,免备案香港物理服务器,E3-1230v2处理器16G内存,350元/月

数脉科技六月优惠促销发布了!数脉科技对香港自营机房的香港服务器进行超低价促销,可选择30M、50M、100Mbps的优质bgp网络。更大带宽可在选购时选择同样享受优惠,目前仅提供HKBGP、阿里云产品,香港CN2、产品优惠码续费有效,仅限新购,每个客户可使用于一个订单。新客户可以立减400元,或者选择对应的机器用相应的优惠码,有需要的朋友可以尝试一下。点击进入:数脉科技官方网站地址数脉科技是一家成...

spinservers:圣何塞物理机7.5折,$111/月,2*e5-2630Lv3/64G内存/2T SSD/10Gbps带宽

spinservers美国圣何塞机房的独立服务器补货120台,默认接入10Gbps带宽,给你超高配置,这价格目前来看好像真的是无敌手,而且可以做到下单后30分钟内交货,都是预先部署好了的。每一台机器用户都可以在后台自行安装、重装、重启、关机操作,无需人工参与! 官方网站:https://www.spinservers.com 比特币、信用卡、PayPal、支付宝、webmoney、Payssi...

asp net空间为你推荐
dvdes-644DVDES-829第二位出场的女的叫什么p图软件哪个好用p图软件哪个好涡轮增压和自然吸气哪个好涡轮增压和自然吸气哪个更好,优缺点是什么?集成显卡和独立显卡哪个好集成显卡和独立显卡的区别?哪个更好?集成显卡和独立显卡哪个好集成显卡和独立显卡是什么区别呢哪个好?电脑管家和360哪个好电脑管家和360卫士哪个好?电视直播软件哪个好目前最好的电视直播软件是什么?红茶和绿茶哪个好红茶和绿茶哪个更好?雅思和托福哪个好考托福、雅思哪个好考?看书软件哪个好有什么好的读书软件啊?
免费vps 域名服务器的作用 域名服务dns的主要功能为 如何申请免费域名 vir burstnet patcha dd444 bgp双线 中国网通测速 卡巴斯基免费试用 爱奇艺会员免费试用 无限流量 shuang12 镇江高防 广州服务器托管 闪讯网 hdchina 学生机 magento主机 更多