ASP.NET之页面传值
一、目前在ASP.NET中页面传值共有这么几种方式:
1、使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。
如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。
但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:

a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
string s_url;
s_url = "b.aspx?name=" + Label1.Text;
Response.Redirect(s_url);
} b.aspx中C#代码 接收页面:
private void Page_Load(object sender, EventArgs e)
{
Label2.Text = Request.QueryString["name"];
}

此方法的优点是简单、方便,缺点是能传递的数据量少,而且不能传递对象,安全性差。
2、Session共享
发送页面:Session("param1") = "1111";
按收页面 string str = Session("param1").ToString();
优点:session的使用很简单,用户可以设置session的存储方式、位置、SessionID的保存是否依赖cookie。
session可以直接存储对象。
缺点:过量的存储会导致服务器内存资源的耗尽,在asp.net中有失效的隐患。
3、Application共享
Application对象的作用范围是整个全局,也就是说对所有用户都有效。
发送页面: Application("param1") = "1111";
按收页面: string str = Application("param1").ToString();
此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
4、Cookie
与Session一样,是对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。
而且Cookie的使用要配合ASP.NET内置对象Request来使用。
设置Cookie: HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
获取Cookie:string name= Request.Cookie["name"].Value.ToString();
优点:非常方便,存在于客户端,不占用服务器资源。
缺点:并非所有的浏览器都支持Cookie;用户可以禁用和删除它;信息采用明文保存,安全性差。
5、Server.Transfer()方式。
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,
新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
Server.Transfer("target.aspx?param1=1111¶m2=2222")
接收页面: string str = Request["param1"]
如果你在A.aspx里面执行Server.Transfer("~/B.aspx"),实际相当于A.aspx告诉ASP.NET处理引擎,你帮我执行B.aspx吧,然后把结果给我,我再给用户。
因此浏览器还是以为自己获取的是A.aspx,而实际上服务器帮A.aspx执行了B.aspx。
Server.Transfer和Response.Redirect的区别:
根本上,Response是叫浏览器去重新转向到指定的网页,而Server自然是发生在服务器端为主了,因此会有以下区别:
1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活;
2. Server.Transfer可以将页面参数方便传递到指定页面;
3. 使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果;
4. Server.Transfer可以减少客户端对服务器的请求;
补充一下,Response.Redirect()需要在服务器和客户端往返两次
而Server.Transfer()在服务器端一次通信即可
使用Server.Transfer后,转向后的页面可以使用前一个页面的参数,有时候确实比较方便。
ASP.NET之页面传值的更多相关文章
- c#ASP.NET中页面传值共有这么几种方式
一.目前在ASP.NET中页面传值共有这么几种方式: 1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在 ...
- ASP.NET中页面传值
一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交, <form action= "target.aspx" method = "post&q ...
- asp.net 跨页面传值常用方法
常用方法有以下: 1.queryString 2.form-post控件传递 3.cookie 4.application 5.session querystring: http://website. ...
- ASP.NET跨页面传值技巧[总结]
个人网站:http://www.51pansou.com .net视频下载:.net视频教程 .net源码下载:.net源码 关于页面传值的方法,我就我个人观点做了些总结,希望对大家有所帮助. 1. ...
- ASP.NET跨页面传值技巧
1 使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用 ...
- asp。Net 页面传值
00.引言 Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一 ...
- ASP.Net中页面传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
- Asp.net mvc页面传值-- dropdownlist
后台传值 List<ConfigParamInfo> paramList = configParamBLL.GetModelList(" and parentID=1" ...
- asp.net mvc 页面传值的方法总结
转自:http://msprogrammer.serviciipeweb.ro/2012/01/15/usual-methods-to-transfer-data-from-page-to-page- ...
随机推荐
- 【心得】Lattice和Xilinx工具关键特性对比(Diamond、ISE)
[博客导航] [导航]FPGA相关 背景 由于项目需要,初次接触Diamond,发现跟之前的ISE有很多不同,记录下一些体会,供参考.按开发流程,将一些常用的特性进行对比,列举如下: IP Core管 ...
- GDB调试指南-变量查看
前言 在启动调试以及设置断点之后,就到了我们非常关键的一步-查看变量.GDB调试最大的目的之一就是走查代码,查看运行结果是否符合预期.既然如此,我们就不得不了解一些查看各种类型变量的方法,以帮助我们进 ...
- 浅析CompareAndSet(CAS)
最近无意接触了AtomicInteger类compareAndSet(从JDK5开始),搜了搜相关资料,整理了一下 首先要说一下,AtomicInteger类compareAndSet通过原子操作实现 ...
- 好程序员分享该如何选择background-image和img标签
好程序员分享该如何选择background-image和img标签,用img标签 如果你希望别人打印页面时候包含这张图片请使用img标签 当这张图片有非常有意义的语义,比如警告图标,请使用img标签及 ...
- uWSGI、WSGI、uwsgi是什么?
uWSGI是一个web服务器,它实现了WSGI协议.uwsgi协议.HTTP等协议: WSGI是web服务器网管接口,是一套协议,用于接收用户请求并将请求进行初次封装,然后交给web框架: uwsgi ...
- (一)jdk8学习心得之遍历
一.遍历 -- 最好和stream流连用 使用jdk8提供的forEach进行遍历时,采用的是多线程的操作,理论上讲是会比原来的方法更快.但是注意,系统启动时需要加载lambda框架的内容.因此如果通 ...
- ansible 模块 分享
A a10_server 管理A10 Networks AX / SoftAX / Thunder / vThunder设备 a10_service_group 管理A10网络设备的服务组 a10_v ...
- Windows kafka_2.11-1.1.0安装
#broker.id= #broker.list=,, listeners=PLAINTEXT://127.0.0.1:9092 advertised.listeners=PLAINTEXT://12 ...
- newCachedThreadPool 的使用
newCachedThreadPool的线程池特点: (1)它是一个可以无限扩大的线程池:它比较适合处理执行时间比较小的任务:corePoolSize为0,maximumPoolSize为无限大,意味 ...
- DAY23、面向对象特性
一.复习1.类: 对象属性的查找顺序:先找自身再找类 类的名称空间:直接写在类中 对象的名称空间:写在__init__方法中,通过self.属性形成名称空间中的名字 类的方法:在类中用@classme ...