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

一、 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. 事务代码SE16N查看数表时可以使用命令激活编辑功能

    &sap_edit命令可以激活SE16N编辑功能,维护数据表,但是是除了主键不能维护外都可以修改

  2. C语言字符串操作函数

    1.函数名: stpcpy  功  能: 拷贝一个字符串到另一个  用  法: char *stpcpy(char *destin, char *source);  程序例: #include < ...

  3. ANSI C中取得结构体字段偏移量的常用方法

    来自http://blog.chinaunix.net/u2/62910/showart_492571.html 假设在ANSI C程序中定义了一个名为MyStruct的结构类型,其中有一个名为MyF ...

  4. Python Object Graphs — objgraph 1.7.2 documentation

    Python Object Graphs - objgraph 1.7.2 documentation Python Object Graphs¶ objgraph is a module that ...

  5. [Android学习笔记]PopupWindow的使用

    什么时候使用PopupWindow? 当业务需求的交互形式需要在当前页弹出一个简单可选项UI与用户进行交互时,可使用PopupWindow完成此功能开发 Android Dev API Doc Pop ...

  6. HTML5调用摄像头实现拍照功能(兼容各大主流浏览器)

    本人亲測,兼容各大主流浏览器,HTML5太强大了,须要的留下邮箱哦 假设想要立即收到,则可到我的资源下载 http://download.csdn.net/detail/laijieyao/81699 ...

  7. [置顶] C++为什么是C++而不是++C

    来自<C++ primer> 问:C++为什么是C++而不是++C 答 :C++之名是Rick Mascitti在1983年夏天定名,c说明它的本质实在C语言演化而来的,”++“是C语言的 ...

  8. 知识网之C++总结

    米老师常说的一句话:构造知识网. 立即要考试了.就让我们构造一下属于C++的知识网.首先从总体上了解C++: 从图中能够了解到,主要有五部分.而当我们和之前的知识联系的话,也就剩下模板和运算符重载以及 ...

  9. loj1201(最大独立集)

    传送门:A Perfect Murder 题意:有一群苍蝇,之间有一些是朋友关系,如果杀了一只苍蝇,那么它的朋友们都会有警惕性,再也杀不了这些朋友了,问最多能杀多少只苍蝇. 分析:根据朋友性连边,最多 ...

  10. centos5.5字体为方块问题的解决_深入学习编程_百度空间

    centos5.5字体为方块问题的解决_深入学习编程_百度空间 centos5.5字体为方块问题的解决 一.yum -y install fonts-chinese二.yum -y install f ...