开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
跟我一起学习ASP.NET 4.5 MVC4.0(六)
原文http://www.cnblogs.com/xdotnet/archive/2012/07/21/aspnet40_webpage20.html 这一系列文章跨度有点大,由于最近忙于其他事情,没有更新,今天重新安装了下Win8系 统,VS2012和SQLServer 2012,顺便抽空继续一篇。
928 0
跟我一起学习ASP.NET 4.5 MVC4.0(四)
原文http://www.cnblogs.com/xdotnet/archive/2012/03/27/aspnet_mvc4_authorize.html 前几个文章中介绍了一些关于MVC4.0的东东,今天我们来看一下登陆验证,也可以说是 权限验证,即AuthorizeAttribute。
731 0
跟我一起学习ASP.NET 4.5 MVC4.0(五)
原文http://www.cnblogs.com/xdotnet/archive/2012/03/29/aspnet_mvc4_html_control_checkboxlist.html 前面几篇文章介绍了一下ASP.NET MVC中的一些基础,今天我们一起来学习一下在ASP.NET MVC中控件的封装。
631 0
跟我一起学习ASP.NET 4.5 MVC4.0(三)
原文 http://www.cnblogs.com/xdotnet/archive/2012/03/07/aspnet_mvc40_validate.html 今天我们继续ASP.NET 4.5 MVC 4.0,前两天熟悉了MVC4.0在VS11和win8下的更新,以及MVC中的基础语法和几个关键字的使用。
777 0
跟我一起学习ASP.NET 4.5 MVC4.0(二)
原文http://www.cnblogs.com/xdotnet/archive/2012/03/06/aspnet_mvc40_keywords.html 上一篇文章中(跟我一起学习ASP.NET 4.5 MVC4.0(一)) 我们基础的了解了一下ASP.NET MVC4.0的一些比较简单的改变,主要是想对于MVC3.0来说的。
821 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载