发展合作-ASP.Net传递页面之间的值
在合作开发中,在页面串传值的时候,遇到了一些困难。在网上搜罗了一下,发现好多的传值方式,能够简单地分下面三种。
一、 URL传值
原页面的值放到目标页面的URL中。然后通过QueryString方法获得该值。
然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同一时候又不能传递对象,可是在传递的值少而安全性要求不高的情况下。这种方法还是一个不错的方案。以下展示使用方法:
源页面WebForm1.aspx.cs中的部分代码:
private void Button1_Click(object sender, System.EventArgs e)
{
string url;
url="WebForm2.aspx? name=" + TextBox1.Text + "&email=" + TextBox2.Text;
Response.Redirect(url); }
目标页面WebForm2.aspx.cs中的部分代码:
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
二、对象属性传值
这类方法相比上面介绍的方法略微复杂一点,但在页面间值传递中却是特别实用的,使用该方法你能够在还有一个页面以对象属性的方式来存取显露的值,当然了,使用这样的方法,你须要额外写一些代码以创建一些属性以便能够在还有一个页面訪问它,可是。这个方式带来的优点也是显而易见的。整体来说,使用这样的方法是简洁的同一时候又是面向对象的。
1.使用Server.Transfer
实现过程例如以下:
1,在页面里加入必要的控件
2,创建返回值的Get属性过程
3,创建能够返回表单的button和链接button
4。在button单击事件处理程序中调用Server.Transfer方法转移到指定的页面
5,在第二个页面中,我们就能够使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就能够使用存取前一个页面的控件的值了
源页面WebForm1.aspx.cs中的部分代码:
public string Name
{
get {return TextBox1.Text; }
}
public string EMail
{
get { return TextBox2.Text;}
}
然后调用Server.Transfer方法
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("WebForm2.aspx");
}
目标页面代码:
//在WebForm2.aspx中务必在第一句话加入
< Reference Page="~/WebForm1.aspx" >或< PreviousPageType VirtualPath="~/WebForm1.aspx" >
private void Page_Load(object sender, System.EventArgs e)
{
//create instance of source web form
WebForm1 wf1;
//get reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}
2.使用PreviousPageType
这个指令是.net2.0中的一个新指令,用于处理ASP.NET 2.0提供的跨页面传送新功能.用于指定定跨页面的传送过程起始于哪个页面.包括两个属性:
TypeName:设置回送时的派生类名
VirtualPath:设置回送时所传送页面的地址.
例如以下演示样例:
源页面WebForm1.aspx中有一个TextBox,ID为txtName.在WebForm1.aspx.cs中设置一个属性:
public TextBox Name
{
get{return this.txtName;}//返回一个控件对象
}
在目标页面的设计文件里
//上方加上
< PreviousPageType VirtualPath="~/Page1.aspx" >,
//然后就能引用WebForm1.aspx中定义的属性了.
lblName.Text="Hello"+PreviousPage.Name.Text+" ";
在以上两个方法中,我们能显而易见的一个字眼“PreviousPage”,事实上这涉及到一个原页面和要跳转到的目标页面。接下来。看一下除了能满足跳转关系页面之间的传值,非跳转页面之间也能够传值的方法:
三、公共变量传值
这类方法使页面的传值更加的方便,把经常使用的值,通常是使用范围比較广泛的变量。能够纳入到公共变量范围中:
1.使用Session变量
使用Session变量是能够在页面间传递值的的还有一种方式,在本例中我们把控件中的值存在Session变量中。然后在还有一个页面中使用它,以不同页面间实现值传递的目的。可是,须要注意的是在Session变量存储过多的数据会消耗比較多的server资源,在使用session时应该谨慎。当然了。我们也应该使用一些清理动作来去除一些不须要的session来减少资源的无谓消耗。
传值页面WebForm1.aspx.cs中的部分代码:
private void Button1_Click(object sender, System.EventArgs e)
{
//textbox1 and textbox2 are webform
//controls
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Server.Transfer("WebForm2.aspx");
}
取值页面WebForm2.aspx.cs中的部分代码:
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}
2.使用Cookie对象变量
这个也是大家常使用的方法。与Session一样,是对每个用户而言的。可是有个本质的差别,即Cookie是存放在client的。而session是存放在server端的。并且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 voidPage_Load(object sender, EventArgs e)
{
string name;
name = Request.Cookie["name"].Value.ToString();
}
3.使用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();
}
表面上,页面之间转移值有许多方法来实现,但要实现的基本观点,只有在三个。
发展合作-ASP.Net传递页面之间的值的更多相关文章
- ASP.NET 不同页面之间传值
不同页面之间如何传值?我们假设A和B两个页面,A是传递,B是接收. 下面学习4种方式: 通过URL链接地址传递 POST方式传递 Session方式传递 Application方式传递 1. 通过UR ...
- jquery 封装页面之间获取值
最近在项目中发页面传值比较繁琐.View → Control → View,或是Session.Cookie 的 感觉不是很好,于是封装了一个页面间的js方法,上码 $.extend({ reque ...
- ASP.NET 弹出对话框和页面之间传递值的经验总结
今天碰到一个弹出对话框(PopUp dialog)的问题, 因该是个傻瓜问题, 但是还是让我研究了半天, 总结了一些前人经验, 拿出来跟大家分享一下! 在ASP.Net中页面之间的传值方法有很多,但是 ...
- asp.net页面之间传值方法详解
asp.net中页面之间传值我们用得最多的就是get,post这两种了,其它的如session,appliction,cookie等这些相对来说少用也不是常用的,只是在特殊情况下在使用了. 1. Ge ...
- struts2怎么实现页面到页面之间的传值?
我要实现一个产品订购的功能,在浏览产品的时候通过点击一个订购的链接,跳转到提交订单的页面,在跳转的同时要把浏览的产品的名称和型号传到提交订单的页面,并且把这里的订单类的产品名称和型号的表单域里赋上传递 ...
- ASP.NET页面之间传递值的几种方式
目录 QueryString Session Cookie Application 一.QueryString QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中. ...
- [转]ASP.NET页面之间传递值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- ASP.NET页面之间传递值的几种方式(转载)
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- [转载]ASP.NET页面之间传递值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
随机推荐
- 【ASP.NET Web API教程】4.1 ASP.NET Web API中的路由
原文:[ASP.NET Web API教程]4.1 ASP.NET Web API中的路由 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. ...
- 网络数据(socket)传输总结
环境限定:TCP/IP下的socket网络传输:C/C++开发语言,32/64位机. 目前有两种方式对数据进行传输:1)字符流形式,即将数据用字符串表示:2)结构型方式,即将数据按类型直接传输. 1) ...
- C语言 realloc为什么要有返回值,realloc返回值具体解释/(解决随意长度字符串输入问题)。
在C语言操作中会用到大量的内存操作,当中非经常常使用的一个是realloc(). 由字面意思能够知道,该函数的作用是用于又一次分配内存. 使用方式例如以下: NewPtr=(数据类型*)realloc ...
- POJ1087 A Plug for UNIX 【最大流】
A Plug for UNIX Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13855 Accepted: 4635 ...
- struts 2吊牌s:if 、s:iterator注意
疏忽,也没有相应的总结.实际上JSTL标签Struts2标签混淆.导致一些上述问题的细节.今天我给从下一个总结,同 后不要再犯这种错误. 总喜欢在s:if标签里面使用$,导致各种数据读不出来. str ...
- google 搜索url详解
www.google.com [http://www.google.cn/search?q=112&hl=zh-CN&client=aff- 360daohang&hs=yhE ...
- 网络知识汇总(2) - Linux下如何修改ip地址
在Linux的系统下如何才能修改IP信息 以前总是用ifconfig修改,重启后总是得重做.如果修改配置文件,就不用那么麻烦了- A.修改ip地址 即时生效: # ifconfig e ...
- ISO-8859-1乱码恢复
为兼容较旧的jQuery插件,我把jQuery版本号从2.1.x降到了1.8.x,这比加入jquery-migration插件要来得干脆. 我没把这两个版本号的的区别一一记下来,而是直接改个版本号号. ...
- CentOS 6.4下编译安装MySQL 5.6.16
一.卸载旧版本号MySql 1.rpm卸载: 1> 检查安装包: rpm -qa | grep mysql 2> 普通删除: rpm -e mysql-5.6.16.rpm 3> 强 ...
- ROOT android 原则。 基于(zergRush)
从: http://bbs.gfan.com/android-2996211-1-1.html 须要ROOT的同学请去上面的地址下载. a.控制手机创建个暂时目录,然后把zergRush脚本写入此目录 ...