解析6种ASP.NET跨页面传值的方法-.Net编程教程

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介:
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.  使用Application 对象变量  
Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。  

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();  
}  

3.  使用Session变量  
想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。  
a.aspx的C#代码  
private void Button1_Click(object sender, System.EventArgs e)  
{  
    Session["name"] = Label.Text;  
}  

b.aspx中C#代码  
private void Page_Load(object sender, EventArgs e)  
{  
    string name;  
    name = Session["name"].ToString();  
}  

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

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();  
}  

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

a.aspx的C#代码  
public string Name  
{  
    get{ return Label1.Text;}  
}  
private void Button1_Click(object sender, System.EventArgs e)  
{  
    Server.Transfer("b.aspx");  
}  

b.aspx中C#代码  
private void Page_Load(object sender, EventArgs e)  
{  
    a newWeb;  //实例a窗体  
    newWeb = (source)Context.Handler;  
    string name;  
    name = newWeb.Name;  
}  

6.Cross-Page Posting  
定位至于源网页位于相同的应用程序的网页,可以读取源网页的值和公共属性,但是不要按浏览器中的重新整理和上一步,这样会照成无法预期的效果  
eg:  
aspx  
  <div>  
        您的名字: <asp:TextBox ID="name" runat="server"> </asp:TextBox>  
        <asp:Button ID="btn_name" runat="server" PostBackUrl="~/Cross-Page Posting/CrossPageTarget.aspx"  
            Text="传送" OnClick="btn_name_Click" />  
    </div>  
cs:  
TextBox name = (TextBox)PreviousPage.FindControl("name");//非public 成员  
        Label1.Text = "欢迎你:" + name.Text;  
previouspage本身属于page类,并且只有在来源网页和目标网页属于同一个asp.net应用程序下的时候才能引用,如果网页不是跨网页公布的目标,或者是网页在不同的应用程序之中,就不会初始化previouspage属性,就不能使用previouspage来存取任何信息  
获得网页的公共属性:  
source.cs:  
public string UserName  
{  
    get{return aa.text;}  
}  

cross-page posting.aspx:  
<%@ PreviousPageType VirtualPath="~/Cross-Page Posting/Source.aspx"%>  
cross-page posting.cs:  
lab.text = previousopage.username;  
//一个网页中只能指示一个previousPage,不然出出现编译错误 

 


本文转自 韬光星夜 51CTO博客,原文链接:http://blog.51cto.com/xfqxj/477117,如需转载请自行联系原作者

相关文章
|
16天前
|
人工智能
歌词结构的巧妙安排:写歌词的方法与技巧解析,妙笔生词AI智能写歌词软件
歌词创作是一门艺术,关键在于巧妙的结构安排。开头需迅速吸引听众,主体部分要坚实且富有逻辑,结尾则应留下深刻印象。《妙笔生词智能写歌词软件》提供多种 AI 功能,帮助创作者找到灵感,优化歌词结构,写出打动人心的作品。
|
23天前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
38 3
|
17天前
|
人工智能
写歌词的技巧和方法全解析:开启你的音乐创作之旅,妙笔生词智能写歌词软件
怀揣音乐梦想,渴望用歌词抒发情感?掌握关键技巧,你也能踏上创作之旅。灵感来自生活点滴,主题明确,语言简洁,韵律和谐。借助“妙笔生词智能写歌词软件”,AI辅助创作,轻松写出动人歌词,实现音乐梦想。
|
2天前
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
|
9天前
|
机器学习/深度学习 人工智能 安全
TPAMI:安全强化学习方法、理论与应用综述,慕工大、同济、伯克利等深度解析
【10月更文挑战第27天】强化学习(RL)在实际应用中展现出巨大潜力,但其安全性问题日益凸显。为此,安全强化学习(SRL)应运而生。近日,来自慕尼黑工业大学、同济大学和加州大学伯克利分校的研究人员在《IEEE模式分析与机器智能汇刊》上发表了一篇综述论文,系统介绍了SRL的方法、理论和应用。SRL主要面临安全性定义模糊、探索与利用平衡以及鲁棒性与可靠性等挑战。研究人员提出了基于约束、基于风险和基于监督学习等多种方法来应对这些挑战。
21 2
|
17天前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
13 1
|
23天前
|
存储 JavaScript 前端开发
Vue3权限控制全攻略:路由与组件层面的用户角色与权限管理方法深度解析
Vue3权限控制全攻略:路由与组件层面的用户角色与权限管理方法深度解析
93 2
|
23天前
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
23天前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色
|
24天前
|
JavaScript
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
28 0

热门文章

最新文章

推荐镜像

更多
下一篇
无影云桌面