Asp.net跨页面传值

                     Asp.net跨页面传值


  记得刚开始做机房收费系统的时候因为用户名在各个对象之间的传递问题狠狠苦恼了几天,现在看学习asp.net的时候发现这里关于这个问题的阐述很清楚,稍微的总结了一下.方便以后使用

1. 使用QueryString变量

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

//ask.aspx的代码 
protected void Button1_Click(object sender,EventArgs e)
{
      Response.Redirect("answer.aspx?name=天天");
}

//answer.aspx中代码 
protectedvoid Page_Load(object sender, EventArgs e)
{
     Response.Write(Request.QueryString["name"]);
}

如下图所示,传递的参数包含在了URL,也因为URL的长度毕竟有限,所以这种方式传递的参数一般都是安全性要求不高结构简单的数值.


                                                                    

2. 使用Application 对象变量

Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用Lock和UnLock方法来对application对象进行锁定,防止多个用户同时对次此对象进行操作,造成数据混乱。并且此对象类似与哈希表,采用键值对来存储数据.如下:

//ask.aspx的代码
private void Button1_Click(object sender, System.EventArgs e)
{
	Application["name"] = "天天";
	Server.Transfer("answer.aspx");
}
//answer.aspx中代码
private void Page_Load(object sender, EventArgs e)
{
	Application.Lock();
	Response.Write(Application["name"].ToString());
	Application.UnLock();
}

                                                                          

这里有一点需要注意的是使用Server.Transfer跳转页面的时候浏览器显示的地址并没有改变,如果不清楚的话,可能会引起误会.

3. 使用Session变量

想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。

ask.aspx的代码

private void Button1_Click(object sender, System.EventArgs e)
{
	Session["name"] = "天天";
	Response.Redirect ("answer.aspx");
}
//answer.aspx中代码
private void Page_Load(object sender, EventArgs e)
{
	Response.Write(Session["name"].ToString());
}


                                                         

4. 使用Cookie对象变量

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

//ask.aspx的代码
private void Button1_Click(object sender, System.EventArgs e)
{
      HttpCookiecookieTest = new HttpCookie("name"); //创建cookie对象
      cookieTest.Value ="天天";                      //给cookie对象赋值
      Response.AppendCookie(cookieTest);              //保存cookies对象(response.Cookie.Add(CookieName);)
      erver.Transfer("answer.aspx");
}
//answer.aspx中代码
private void Page_Load(object sender, EventArgs e)
{
     HttpCookie MyCookie= Request.Cookies["name"];//获取Cookie对象
     String StrName =MyCookie.Value;   //获取其变量值
     Response.Write(StrName);
}

5.使用cache缓存的方式

当然缓存存在的时间不是太长所以需要慎重使用

//ask.aspx的代码
 protected void Button1_Click(object sender,EventArgs e)
 {
           this.Cache.Insert("name", "天天");
           Server.Transfer("answer.aspx");
}

//answer.aspx中代码
protectedvoid Page_Load(object sender, EventArgs e)
{
           Response.Write(Cache["name"].ToString());
}

6. 使用Server.Transfer方法

这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。

//ask.aspx的代码
public string name
{
     get
     {
         return "天天";
      }
}
private void Button1_Click(object sender, System.EventArgs e)
{
	Server.Transfer("answer.aspx");
}

//answer.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
     ask a = new ask();
     string StrName  = a.name;
     Response.Write(StrName);
}

错误纰漏再所难免,欢迎莅临指正


已标记关键词 清除标记
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质? 你是否想成为一名资深开发人员,想开发别人做不了的高性能程序? 你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹?   那么C++就是你个人能力提升,职业之路进阶的不二之选。 【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。 2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。 3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。 【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署; 2.吊打一切关于C++的笔试面试题; 3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。 【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块 基础篇 本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。 进阶篇 本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。 提升篇: 本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页