开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开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 MVC (五、HttpClient接口解析)(6)
ASP.NET MVC (五、HttpClient接口解析)(6)
0 0
ASP.NET MVC (五、HttpClient接口解析)(5)
ASP.NET MVC (五、HttpClient接口解析)(5)
0 0
ASP.NET MVC (五、HttpClient接口解析)(4)
ASP.NET MVC (五、HttpClient接口解析)(4)
0 0
ASP.NET MVC (五、HttpClient接口解析)(3)
ASP.NET MVC (五、HttpClient接口解析)(3)
0 0
ASP.NET MVC (五、HttpClient接口解析)(2)
ASP.NET MVC (五、HttpClient接口解析)(2)
0 0
ASP.NET MVC (五、HttpClient接口解析)(1)
ASP.NET MVC (五、HttpClient接口解析)(1)
0 0
ASP.NET Core on K8S深入学习(2)部署过程解析与Dashboard
本文通过部署一个ASP.NET Core WebAPI到K8S为例,介绍了K8S部署的详细过程步骤,最后部署Dashboard从而能够进行可视化的管理。后续会探索各种应用的运行方式和更多的内容,当然笔者也是初学,有很多不足之处,请多包涵。
995 0
文章
问答
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载