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

一、 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. bestcoder.hdu.edu.cn

    http://bestcoder.hdu.edu.cn/ Problem A 题目链接: http://bestcoder.hdu.edu.cn/contests/contest_showproble ...

  2. Dom4j SAXReader Constructors

    Dom4j读取xml:eg1: package xml; import java.io.File; import org.dom4j.DocumentException; import org.dom ...

  3. MS Project 2007 工期、工时、资源、固定单位、固定工期、固定工时

    0. 基本概念 工期:指完成每项项目任务所经历的实际时间,及开始日期和结束时期之差.Project中,工期的默认单位是天. 工时:指将任务分配给资源后,每个资源执行任务的工作时间.Project中,工 ...

  4. Swift - 使用UIWebView和UIToolbar制作一个浏览器

    使用网页控件(UIWebView)与工具栏控件(UIToolbar),我们可以自制一个小型的浏览器,其功能如下: 1,输入网址,点击“Go”按钮加载网页 2,加载过程中有进度条,同时可以点击停止按钮取 ...

  5. 窗体的Alpha通道透明色支持(一旦 Form 被定义为利用 LayeredWindow ,窗口的绘图不再响应沿用多年的 WM_Paint 消息)

    参考: http://www.delphibbs.com/delphibbs/dispq.asp?lid=2190768 Windows 2000后,为了支持类似MAC界面的Alpha通道混合效果,提 ...

  6. 使用SetUnhandledExceptionFilter转储程序崩溃时内存DMP注意事项

    使用代码手工生成dmp文件 SetUnhandledExceptionFilter 为每个线程设置SetUnhandledExceptionFilter(MyCallBack),(必须在每个线程中启动 ...

  7. Github上四种Lisp方言的流行度 | 肉山博客 (Wenshan's Blog)

    Github上四种Lisp方言的流行度 | 肉山博客 (Wenshan's Blog) Github上四种Lisp方言的流行度

  8. 一个Java对象到底占多大内存?(转)

    最近在读<深入理解Java虚拟机>,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存? 在网上搜到了一篇博客讲的非常好 ...

  9. JSON-C 的安装与使用

    下载源代码安装步骤 wget http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz tar xvf json-c-0.9.tar.gz cd jso ...

  10. premake 使用clang替换gcc

    接着前文:premake在Ubuntu和GCC环境下创建简单的C++工程 由于clang支持gcc所有参数,所以使得在premake中替换gcc变得很简单.基本上就是通过传递参数或者设置环境变量的方式 ...