解析6种ASP.NET跨页面传值的方法-.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.  使用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,如需转载请自行联系原作者

相关文章
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
3215 89
|
存储 Java 开发者
浅析JVM方法解析、创建和链接
上一篇文章《你知道Java类是如何被加载的吗?》分析了HotSpot是如何加载Java类的,本文再来分析下Hotspot又是如何解析、创建和链接类方法的。
811 132
|
安全 Ubuntu Shell
深入解析 vsftpd 2.3.4 的笑脸漏洞及其检测方法
本文详细解析了 vsftpd 2.3.4 版本中的“笑脸漏洞”,该漏洞允许攻击者通过特定用户名和密码触发后门,获取远程代码执行权限。文章提供了漏洞概述、影响范围及一个 Python 脚本,用于检测目标服务器是否受此漏洞影响。通过连接至目标服务器并尝试登录特定用户名,脚本能够判断服务器是否存在该漏洞,并给出相应的警告信息。
1198 84
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
1642 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
开发框架 .NET 中间件
.net8 使用 license 证书授权案例解析
本文介绍了如何使用 `.NET CLI` 创建并改造一个 `ASP.NET Core Web API` 项目,以实现基于许可证的授权机制。具体步骤包括创建项目、添加必要的 NuGet 包(如 `Standard.Licensing` 和 `Swashbuckle.AspNetCore`),以及修改 `Program.cs` 文件以集成自定义的许可证验证中间件。项目结构中新增了 `LicenseController` 接口用于处理授权相关操作,并通过测试流程验证了默认天气接口在未授权和授权状态下的响应情况。整个过程确保了应用程序能够在启动时正确验证许可证,保障系统的安全性与可控性。
912 10
.net8 使用 license 证书授权案例解析
|
JSON 监控 网络协议
Bilibili直播信息流:连接方法与数据解析
本文详细介绍了自行实现B站直播WebSocket连接的完整流程。解析了基于WebSocket的应用层协议结构,涵盖认证包构建、心跳机制维护及数据包解析步骤,为开发者定制直播数据监控提供了完整技术方案。
2877 9
|
数据可视化 项目管理
个人和团队都好用的年度复盘工具:看板与KPT方法解析
本文带你了解高效方法KPT复盘法(Keep、Problem、Try),结合看板工具,帮助你理清头绪,快速完成年度复盘。
1782 7
个人和团队都好用的年度复盘工具:看板与KPT方法解析
|
安全 IDE Java
重学Java基础篇—Java Object类常用方法深度解析
Java中,Object类作为所有类的超类,提供了多个核心方法以支持对象的基本行为。其中,`toString()`用于对象的字符串表示,重写时应包含关键信息;`equals()`与`hashCode()`需成对重写,确保对象等价判断的一致性;`getClass()`用于运行时类型识别;`clone()`实现对象复制,需区分浅拷贝与深拷贝;`wait()/notify()`支持线程协作。此外,`finalize()`已过时,建议使用更安全的资源管理方式。合理运用这些方法,并遵循最佳实践,可提升代码质量与健壮性。
642 1
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
710 5

推荐镜像

更多
  • DNS