发展合作-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 ...
随机推荐
- Eclipse在点击运行后不能自动保存的解决
今天在eclipse上写程序调试时,发现当我点击运行按键之后,并不能在运行前帮我自动保存,也就是说每次修改代码之后, 运行的还是前一次运行之前的代码,并不是修改之后的代码,因此通过在网上搜索解决方案之 ...
- Hook任务栏时钟窗口(原理其实很简单,就是注入DLL到时钟窗口进程(explorer.exe))
用过一些日历软件的小伙伴应该都知道它们都实现了在时钟窗口上的Hook,也就是屏蔽了系统原有的功能,实现自己的功能 某日历软件Hook时钟窗口后的效果 经过一番研究,发现原理其实很简单,就是注入DLL到 ...
- Please verify you invoked Maven from the correct directory
解决办法: 在cmd中,把当前路径转换到一个含有pom文件的 项目路径下 再使用 类似下面的deploy就行 mvn deploy:deploy-file -DgroupId=com.taobao.n ...
- Javascript selection的兼容性写法介绍
本文为大家讲解下Javascript selection的兼容性写法,感兴趣的朋友可以参考下 function getSelectedText() { //this function code is ...
- Python Errors and Exceptions
1. python中的try{}catch{} 2. raise exception 3. try...except ... else.. 4. finally块 python中的异常处理的keywo ...
- 数字证书, 数字签名, SSL(TLS) , SASL .
因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结. 1. 首先推荐几个文章: 数字证书: http://www.cnblogs.com/hyddd/ar ...
- LCA 最近公共祖先 tarjan离线 总结 结合3个例题
在网上找了一些对tarjan算法解释较好的文章 并加入了自己的理解 LCA(Least Common Ancestor),顾名思义,是指在一棵树中,距离两个点最近的两者的公共节点.也就是说,在两个点通 ...
- ruby on rails创建的页面訪问很慢
ruby on rails创建的页面訪问很慢 用rvm安装的ruby1.9.3 解决:cd ~/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/webrick v ...
- HDU 3613 Best Reward 正反两次扩展KMP
题目来源:HDU 3613 Best Reward 题意:每一个字母相应一个权值 将给你的字符串分成两部分 假设一部分是回文 这部分的值就是每一个字母的权值之和 求一种分法使得2部分的和最大 思路:考 ...
- spring-bean属性配置解析
autowire属性值有 byName 根据Bean定义时的“id"属性上指定的别名与Setter名称是否一致进行自动装配 byType 根据PoJo的setXXX()方法所接受的类型判断b ...