在合作开发中,在页面串传值的时候,遇到了一些困难。在网上搜罗了一下,发现好多的传值方式,能够简单地分下面三种。

一、 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传递页面之间的值的更多相关文章

  1. ASP.NET 不同页面之间传值

    不同页面之间如何传值?我们假设A和B两个页面,A是传递,B是接收. 下面学习4种方式: 通过URL链接地址传递 POST方式传递 Session方式传递 Application方式传递 1. 通过UR ...

  2. jquery 封装页面之间获取值

    最近在项目中发页面传值比较繁琐.View →  Control → View,或是Session.Cookie 的 感觉不是很好,于是封装了一个页面间的js方法,上码 $.extend({ reque ...

  3. ASP.NET 弹出对话框和页面之间传递值的经验总结

    今天碰到一个弹出对话框(PopUp dialog)的问题, 因该是个傻瓜问题, 但是还是让我研究了半天, 总结了一些前人经验, 拿出来跟大家分享一下! 在ASP.Net中页面之间的传值方法有很多,但是 ...

  4. asp.net页面之间传值方法详解

    asp.net中页面之间传值我们用得最多的就是get,post这两种了,其它的如session,appliction,cookie等这些相对来说少用也不是常用的,只是在特殊情况下在使用了. 1. Ge ...

  5. struts2怎么实现页面到页面之间的传值?

    我要实现一个产品订购的功能,在浏览产品的时候通过点击一个订购的链接,跳转到提交订单的页面,在跳转的同时要把浏览的产品的名称和型号传到提交订单的页面,并且把这里的订单类的产品名称和型号的表单域里赋上传递 ...

  6. ASP.NET页面之间传递值的几种方式

    目录 QueryString Session Cookie Application 一.QueryString QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中. ...

  7. [转]ASP.NET页面之间传递值的几种方式

    页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...

  8. ASP.NET页面之间传递值的几种方式(转载)

    页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...

  9. [转载]ASP.NET页面之间传递值的几种方式

    页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...

随机推荐

  1. Android设计中的.9.png与Android Studio中的设置

    在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”.这种图片是用于Android开发的一种特殊的图片格式,它的 ...

  2. RobotFrameWork(十一)AutoItLibrary测试库在win7(64bit)下安装及简单使用

    最近安装AutoItLibrary,发现在win7 x64下无法安装成功,后来经过定位,发现是3rdPartyTools\AutoIt目录下面AutoItX3.dll的问题.因为AutoItX3.dl ...

  3. 基于Predictive Parsing的ABNF语法分析器(十)——AbnfParser文法解析器之数值类型(num-val)

    ANBF语法中的数值类型有3种:二进制.十进制和十六进制,可以是一个以点号分隔的数列,也可以是一个数值的范围.例如,%d11.22.33.44.55表示五个有次序的十进制数字“11.22.33.44. ...

  4. Unable to instantiate activity ComponentInfo或java.lang.ClassNotFoundException: com.ibright.herolegen

    不知道怎么回事,在libs中添加了jar包后,无法给jar包附加上源码,于是采取以下措施: 删除自动生成的依赖: 在Android Dependences目录上右击->Build Path -& ...

  5. Swift - 使用网格(UICollectionView)的自定义布局实现复杂页面

    网格UICollectionView除了使用流布局,还可以使用自定义布局.实现自定义布局需要继承UICollectionViewLayout,同时还要重载下面的三个方法: 1 2 3 4 5 6 7 ...

  6. ThinkPhp学习07

    原文:ThinkPhp学习07 简单CRUD操作 public function show() { $m=M('User'); // $arr=$m->find(2); //查找id=2的数据, ...

  7. php 上传文件 $_FILES['']['type']的值

    php 上传文件 $_FILES['']['type']的值 一个函数 function upload_file($fname,$ftype,$fsize,$ferror,$ftmp_name,$fp ...

  8. C#整理

    输入输出--数据类型--变量与常量--运算符表达式--语句(顺序.分支.循环)--数组--函数--结构体一.输入与输出.Console.ReadLine();Console.WriteLine();C ...

  9. cocos2d-x游戏开发 跑酷(四) 关联与物理世界

    原创.转载注明出处http://blog.csdn.net/dawn_moon/article/details/21451077 前面一节尽管实现了一个跑动的人物,可是他只不过一个精灵在运行一个跑动的 ...

  10. Linux查看硬盘使用时间等信息

    查看硬盘信息的很多命令,都需要root权限,如果普通用户无法看到信息,请切换至root: 1.查看硬盘使用时间等信息 硬盘使用时间很重要,硬盘理论寿命是3万小时以上 $ sudo smartctl - ...