解析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,如需转载请自行联系原作者

相关文章
|
9月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
2008 2
|
9月前
|
监控 Cloud Native 测试技术
.NET技术深度解析:现代企业级开发指南
每日激励:“不要一直责怪过去的自己,他曾经站在雾里也很迷茫”。我是蒋星熠Jaxonic,一名在代码宇宙中探索的极客旅人。从.NET Framework到.NET 8,我深耕跨平台、高性能、云原生开发,践行领域驱动设计与微服务架构,用代码书写技术诗篇。分享架构演进、性能优化与AI融合前沿,助力开发者在二进制星河中逐光前行。关注我,共探技术无限可能!
.NET技术深度解析:现代企业级开发指南
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
1070 3
|
开发框架 .NET 中间件
.net8 使用 license 证书授权案例解析
本文介绍了如何使用 `.NET CLI` 创建并改造一个 `ASP.NET Core Web API` 项目,以实现基于许可证的授权机制。具体步骤包括创建项目、添加必要的 NuGet 包(如 `Standard.Licensing` 和 `Swashbuckle.AspNetCore`),以及修改 `Program.cs` 文件以集成自定义的许可证验证中间件。项目结构中新增了 `LicenseController` 接口用于处理授权相关操作,并通过测试流程验证了默认天气接口在未授权和授权状态下的响应情况。整个过程确保了应用程序能够在启动时正确验证许可证,保障系统的安全性与可控性。
817 10
.net8 使用 license 证书授权案例解析
|
设计模式 XML 算法
策略模式(Strategy Pattern)深度解析教程
策略模式属于行为型设计模式,通过定义算法族并将其封装为独立的策略类,使得算法可以动态切换且与使用它的客户端解耦。该模式通过组合替代继承,符合开闭原则(对扩展开放,对修改关闭)。
|
域名解析 弹性计算 负载均衡
新手上云教程参考:阿里云服务器租用、域名注册、备案及域名解析流程图文教程
对于想要在阿里云上搭建网站或应用的用户来说,购买阿里云服务器和注册域名,绑定以及备案的流程至关重要。本文将以图文形式为您介绍阿里云服务器购买、域名注册、备案及绑定的全流程,以供参考,帮助用户轻松上手。
|
存储 弹性计算 人工智能
阿里云发票申请图文教程及常见问题解析
在购买完阿里云服务器或者其他云产品之后,如何申请发票成为了许多用户关注的焦点。尤其是对于初次购买阿里云服务器的用户来说,发票申请流程可能并不熟悉。本文将为大家详细介绍阿里云服务器购买之后如何申请发票,以及申请过程中可能遇到的常见问题,帮助大家轻松完成发票申请。
11142 2
|
弹性计算 运维 网络安全
阿里云轻量应用服务器产品解析与搭建个人博客网站教程参考
轻量应用服务器(Simple Application Server)作为阿里云面向单机应用场景推出的云服务器产品,以其一键部署、一站式管理、高性价比等特性,深受个人开发者、中小企业及入门级用户的喜爱。本文将全面解析阿里云轻量应用服务器的产品优势、应用场景、使用须知,以及使用轻量应用服务器搭建个人博客网站的详细教程,帮助用户更好地了解和使用这一产品。

推荐镜像

更多
  • DNS