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

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

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

ShockHosting日本机房VPS测试点评

这个月11号ShockHosting发了个新上日本东京机房的邮件,并且表示其他机房可以申请转移到日本,刚好赵容手里有个美国的也没数据就发工单申请新开了一个,这里做个简单的测试,方便大家参考。ShockHosting成立于2013年,目前提供的VPS主机可以选择11个数据中心,包括美国洛杉矶、芝加哥、达拉斯、杰克逊维尔、新泽西、澳大利亚、新加坡、日本、荷兰和英国等。官方网站:https://shoc...

wordpress投资主题模版 白银黄金贵金属金融投资网站主题

wordpress投资主题模版是一套适合白银、黄金、贵金属投资网站主题模板,绿色大气金融投资类网站主题,专业高级自适应多设备企业CMS建站主题 完善的外贸企业建站功能模块 + 高效通用的后台自定义设置,简洁大气的网站风格设计 + 更利于SEO搜索优化和站点收录排名!点击进入:wordpress投资主题模版安装环境:运行环境:PHP 7.0+, MYSQL 5.6 ( 最低主机需求 )最新兼容:完美...

asp net空间为你推荐
p图软件哪个好用p图软件哪个好炒股软件哪个好炒股软件真的那么好用吗?手机炒股软件哪个好手机炒股软件云盘哪个好云盘有哪些,哪个云盘好辽宁联通网上营业厅网中国联通的初始服务密码一般是多少360云盘360云盘和百度云盘哪个更好360云安全中心可以连接到360云安全中心,但是无法上网广东联通炫铃为什么广东联通的炫铃业务老是取消失败?退订失败?便宜坊为什么全聚德比便宜坊出名?占便宜占便宜是什么意思??
fc2新域名 Oray域名注册服务商 日本动态vps vps安全设置 国外空间服务商 哈喽图床 网站保姆 服务器架设 777te 柚子舍官网 河南m值兑换 电信托管 上海电信测速 英雄联盟台服官网 独立主机 贵阳电信 杭州电信宽带优惠 万网注册 godaddy空间 fatcow 更多