一、目前在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&param2=2222")
接收页面: string str = Request["param1"]

如果你用的是Server.Transfer,是不可能显示目标URL的,因为浏览器对这一无所知。
如果你在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后,转向后的页面可以使用前一个页面的参数,有时候确实比较方便。
转载:http://www.cnblogs.com/jiajiayuan/archive/2012/09/17/2688284.html

ASP.NET之页面传值的更多相关文章

  1. c#ASP.NET中页面传值共有这么几种方式

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在 ...

  2. ASP.NET中页面传值

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,    <form action= "target.aspx" method = "post&q ...

  3. asp.net 跨页面传值常用方法

    常用方法有以下: 1.queryString 2.form-post控件传递 3.cookie 4.application 5.session querystring: http://website. ...

  4. ASP.NET跨页面传值技巧[总结]

    个人网站:http://www.51pansou.com .net视频下载:.net视频教程 .net源码下载:.net源码 关于页面传值的方法,我就我个人观点做了些总结,希望对大家有所帮助. 1.  ...

  5. ASP.NET跨页面传值技巧

      1 使用QueryString变量    QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用  ...

  6. asp。Net 页面传值

    00.引言 Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一 ...

  7. ASP.Net中页面传值的几种方式

    开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...

  8. Asp.net mvc页面传值-- dropdownlist

    后台传值 List<ConfigParamInfo> paramList = configParamBLL.GetModelList(" and parentID=1" ...

  9. asp.net mvc 页面传值的方法总结

    转自:http://msprogrammer.serviciipeweb.ro/2012/01/15/usual-methods-to-transfer-data-from-page-to-page- ...

随机推荐

  1. Mysql--alter命令小特点

    以下命令均在mysql命令行下执行.1. 修改表名称有2种方法,mysql命令行,没有区分大小写,方法1:mysql>ALTER TABLE 表名l RENAME TO 表名2; 方法2:mys ...

  2. windows下编译Grafana前端

    本次介绍一下Windows环境源码编译步骤. 准备 安装Go 1.8.1 安装NodeJS LTS 安装Git 安装golang开发环境:  参考链接:https://www.cnblogs.com/ ...

  3. 芒果绿的blog

    --------------------------------------------------------------这是芒果绿的blog!!-------------------------- ...

  4. Java 疑问自问自答

    1.为什么把关闭资源放finally中? 答:保证即使前面发生一些异常情况也会最终正常执行finally中的代码,用于保证资源释放. 来源:https://bbs.csdn.net/topics/36 ...

  5. [LeetCode] 17. 电话号码的字母组合

    题目描述:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 题目描述: 给定一个仅包含数字 2-9 的字符 ...

  6. QPen

    Help on class QPen in module PyQt5.QtGui: class QPen(sip.simplewrapper) |  QPen() |  QPen(Qt.PenStyl ...

  7. 你不需要 jQuery,但你需要一个 DOM 库

    写这篇文章的目的,一方面是介绍一下自己编写的模块化 DOM 库 domq.js,另一方面是希望大家对 jQuery 有一个正确的认识,即使 jQuery 已经逐渐退出历史舞台,但是它的 API 将会以 ...

  8. Scrum Meeting 博客

    笨拙软件工程 Scrum Meeting 博客汇总 一.Alpha阶段 [alpha阶段]第一次Scrum Meeting [alpha阶段]第二次Scrum Meeting [alpha阶段]第三次 ...

  9. redis 的过期策略都有哪些?内存淘汰机制都有哪些?

    面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 r ...

  10. Windows rundll32的用法-批处理管理打印机

    用法: rundll32 printui.dll,PrintUIEntry [options] [@commandfile] /a[file] 二进制文件名 /b[name] 基本打印机名 /c[na ...