博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经典面试题(三):ASP.NET部分----ASP.NET 页面之间传递值的几种方式
阅读量:6272 次
发布时间:2019-06-22

本文共 3552 字,大约阅读时间需要 11 分钟。

ASP.NET 页面之间传递值的几种方式

1.使用QueryString,  如....?id=1; response. Redirect()....
2.使用Session变量。
3.使用Server.Transfer。
4.Application 。
5.<input type="hidden"></input>
6.数据库。
7.cookie

使用QueryString :

     优点:(1)非常简单的传值方式,可以将传送的值显示在浏览器的地址栏中

     缺点:(1)不能传递数组或对象等复杂类型 (2)传送的值显示在浏览器的地址栏中(安全性不高)

     适用范围:如果是传递一个或多个安全性要求不高或是结构简单的数值时     

View Code
  //1,使用控件创建web表单(form)   //2,创建可以返回表单的按钮和链接按钮   //3,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量   //4,在保存的URL里添加QueryString参数   //5,使用Response.Redirect重定向到上面保存的URL   //下面的代码片断演示了如何实现这个方法:   //源页面代码: private void Button1_Click   (object sender, System.EventArgs e)   {
  string url;   url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;   Response.Redirect(url);   }   //目标页面代码: private void Page_Load   (object sender, System.EventArgs e)   {
  Label1.Text=Request.QueryString["name"];   Label2.Text=Request.QueryString["email"];   }

 使用Session变量:

         优点:(1)能够传递数组或对象等复杂类型

                   (2)很容易实现任意两个页面之间的值的传递

         缺点:(1)Session变量存储过多的数据会消耗比较多的服务器资源,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗

                  (2)iis中由于有进程回收机制,系统繁忙的话Session会丢失

View Code
 //1,在页面里添加必要的控件   //2,创建可以返回表单的按钮和链接按钮   //3,在按钮或链接按钮的单击事件里,把控件的值添加到session变量里   //4,使用Response.Redirect方法重定向到另一个页面   //5,在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它   //下面的代码片断演示了如何实现这个方法:   //源页面代码: private void Button1_Click   (object sender, System.EventArgs e)   {
  //textbox1 and textbox2 are webform   //controls   Session["name"]=TextBox1.Text;   Session["email"]=TextBox2.Text;   Server.Transfer("anotherwebform.aspx");   }   //目标页面代码: private void Page_Load   (object sender, System.EventArgs e)   {
  Label1.Text=Session["name"].ToString();   Label2.Text=Session["email"].ToString();   Session.Remove("name");   Session.Remove("email");   }

使用Server.Transfer :

                 优点(1)可以在另一个页面以对象属性的方式来存取显露的值 (2)简洁且面向对象

                 缺点(2)你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它

View Code
//1,在页面里添加必要的控件   //2,创建返回值的Get属性过程   //3,创建可以返回表单的按钮和链接按钮   //4,在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面   //5,在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了   //以下代码综合实现上述步骤过程的代码:   //源页面代码:   //把以下的代码添加到页面中 public string Name   {
  get   {
  return TextBox1.Text;   }   }   public string EMail   {
  get   {
  return TextBox2.Text;   }   } private void Button1_Click   (object sender, System.EventArgs e)   {
  Server.Transfer("anotherwebform.aspx");   }   //目标页面代码: private void Page_Load   (object sender, System.EventArgs e)   {
  //create instance of source web form   WebForm1 wf1;   //get reference to current handler instance   wf1=(WebForm1)Context.Handler;   Label1.Text=wf1.Name;   Label2.Text=wf1.EMail;   }

  使用Application 对象变量

       Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。

View Code
//a.aspx的C#代码 private void Button1_Click(object sender, System.EventArgs e) {
Application["name"] = Label1.Text; Server.Transfer("b.aspx"); } //b.aspx中C#代码 private void Page_Load(object sender, EventArgs e) {
string name; Application.Lock(); name = Application["name"].ToString(); Application.UnLock(); }

使用Cookie对象变量

     这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

View Code
//a.aspx的C#代码 private void Button1_Click(object sender, System.EventArgs e) {
HttpCookie cookie_name = new HttpCookie("name"); cookie_name.Value = Label1.Text; Reponse.AppendCookie(cookie_name); Server.Transfer("b.aspx"); } //b.aspx中C#代码 private void Page_Load(object sender, EventArgs e) {
string name; name = Request.Cookie["name"].Value.ToString(); }

 参考链接:

(1)

(2)

转载地址:http://xnlpa.baihongyu.com/

你可能感兴趣的文章
JavaWeb下载文件response
查看>>
Laravel的三种安装方法总结
查看>>
SpringMVC加载配置Properties文件的几种方式
查看>>
C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginat...
查看>>
java 项目相关 学习笔记
查看>>
numpy opencv matlab eigen SVD结果对比
查看>>
WPF获取某控件的位置,也就是偏移量
查看>>
Boost C++ 库 中文教程(全)
查看>>
solr查询优化(实践了一下效果比较明显)
查看>>
jdk目录详解及其使用方法
查看>>
说说自己对RESTful API的理解s
查看>>
通过layout实现可拖拽自动排序的UICollectionView
查看>>
服务器错误码
查看>>
javascript中的面向对象
查看>>
Splunk作为日志分析平台与Ossec进行联动
查看>>
yaffs文件系统
查看>>
Mysql存储过程
查看>>
NC营改增
查看>>
Lua
查看>>
Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
查看>>