Web程序中网页间数据传递方法小结

转载 2006年06月07日 14:38:00

我们总是会遇到这样的情况,需要将数值从一个网页传递到另一个网页。在这篇文章中,向你展示了几种从一个网页向另一个网页传递数值的几种方法。在此例子中,创建的网页由一个文本控件和几个按钮控件组成。在文本框中输入的数据通过被标识在按钮控件中的不同方法从一个网页传递到另一个网页。

  Response.Redirect

  让我们首先看一看如何使用Response.Redirect方法传递数据。这是它们之中最简单的方法。在文本框中输入一些数据,并且当你输入完成数据后,按下“Respose.Redirect”按钮。我们会得到一个提示,有时我们想在catch程序中传递另一个网页,意味着捕捉到例外程序并且向另一个网页传递。如果你试图这样做,它会给你一个System.Threading例外程序。因为你想遗留下一个线程向另一个网页传递数据,所以这个例外程序就会被抛出。

Response.Redirect("WebForm5.aspx",false);

  这个语句告诉编译器定位到“WebForm5.aspx”,这里的“false”意味着在当前网页不能结束你正在做的事情。应该看一看线程发布命令的System.Threading类。在下面,看一看按钮事件的C#代码。“txtName”文本控件的名字,文本框的内的值传递到一个叫做“WebForm5.aspx”的网页。在“?”之后的“Name”符号只是一个临时的响应变量,这个变量保持着文本的数值。

private void Button1_Click(object sender, System.EventArgs e)
{
 // Value sent using HttpResponse
 Response.Redirect("WebForm5.aspx?Name="+txtName.Text);
}

  好的,到这种观点为止,你使用Response发送了数值。刚刚,在此我收集到了这些数值,所以在“WebForm5.aspx”page_Load事件中,写入这些代码。首先,我们检查到输入的值不为null。如果不是这样,我们只是简单地在网页上使用Label控件显示数值。注意:如果你使用Response.Redirect方法来传递这些数值,所有这些数值在浏览器的URL中都是不可见的。你绝不能使用Response.Redirect来传递信用证号码和机密信息。

if (Request.QueryString["Name"]!= null)
Label3.Text = Request.QueryString["Name"];

  Cookies

  接下来使用Cookies。Cookies在服务器端创建,但是客户端省略。在此 “Cookies” 按钮的click事件中,写入以下代码:

HttpCookie cName = new HttpCookie("Name");
cName.Value = txtName.Text;
Response.Cookies.Add(cName);
Response.Redirect("WebForm5.aspx");

  首先,创建一个cookie命名为“cName”。既然一个cookie实例可以拥有许多数值,告诉编译器这个cookie持有“Name”数值。我们将它赋值给TextBox并且最结后将它加入Response流,再使用Response.Redirect方法传递给其它网页。

  让我们看一看如何得到被另一个网页传递的cookie数值。

if (Request.Cookies["Name"] != null )
Label3.Text = Request.Cookies["Name"].Value;

  如你所看到的,象我们以前做一的一样正是使用同一种方法,刚刚我们在Request.QueryString之内,使用了Request.Cookies。记注一些浏览器不接收cookies。


  Session Variables

  接下来我们看一看session变量,这些变量由服务器来处理。第一个响影一从客户端传递到服务器,Sessions就创建了,并且当用户关闭浏览器窗口或者一些异常操作发生,session就会结束。给你一些可以使用session变量来传递数值的方法。在下面你看到为用户创建的Session和 “Name”是关键字,也如知名的Session关键字一样,关键字被赋给TextBox数值。

// Session Created

Session["Name"] = txtName.Text;
Response.Redirect("WebForm5.aspx");

// The code below shows how to get the session value.
// This code must be placed in other page.

if(Session["Name"] != null)
 Label3.Text = Session["Name"].ToString();
 Application Variables

  有时,我们需要存取来自网页任何地方的数值。因为那样,可以使用Application变量。这里有一小段代码,这段代码显示如何做到那些事情。一旦创建Application变量并且为其赋值,在应用程序的任何地方都可以重新得到它的值。

// This sets the value of the Application Variable

Application["Name"] = txtName.Text;
Response.Redirect("WebForm5.aspx");

// This is how we retrieve the value of the Application Variable

if( Application["Name"] != null )
Label3.Text = Application["Name"].ToString();

  HttpContext

  可以使用HttpContext从网页中重新得到数值。通过使用方法的属性获得那些数值。既然它们易于编写代码和修改,使用属性是一种好方法。在你的第一个网页中,制造一个属性,这个属性可以返回TextBox的值。

public string GetName
{
 get { return txtName.Text; }
}

  我们使用Server.Transfer来将此控件发送到一个新网页。注意:Server.Transfer仅仅将此控件传递到新的网页并且不重新定位该网页,这意味着你会看到在URL中旧网页的地址。简单地在“Server.Transfer”按钮单击事件,并且增加下列代码。

Server.Transfer("WebForm5.aspx");

  现在,让我们定位网页,数值就传递到该网页上,在这种情况下使用的该网页是“webForm5.aspx”。

// You can declare this Globally or in any event you like

WebForm4 w;

// Gets the Page.Context which is Associated with this page

w = (WebForm4)Context.Handler;

// Assign the Label control with the property "GetName" which returns string

Label3.Text = w.GetName;
Special Note

  特别注意 与你看到的一样,从一个网页向别一网页传递数值时有不同的方法。每一个方法有它自己的优点也有其缺点。所以,当你传递数值时,选择好你所需要的所以你就会有一种好方法,这种方法对你是最为可行的。

相关文章推荐

winform程序访问一个web方法,传递参数,返回数据

/// /// 获取web中接口,返回一个xml,把xml转化为Dataset /// /// public DataSe...

从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法

对于该篇文章有疑问或者错误的地方,邮件至 wzwahl36@qq.com,欢迎交流,个人主页:http://wzwahl36.net/。     在做web应用的时候,我们经常会遇到在web中调用本...

从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法

对于该篇文章有疑问或者错误的地方,邮件至 wzwahl36@qq.com,欢迎交流。     在做web应用的时候,我们经常会遇到在web中调用本地应用程序的问题,例如在web中点击一个按钮,然后打...

在ASP.NET网页间传递数据的五种方法

目前为止在ASP.NET网页中传递数据的方式至少有5种: 1、通过查询字符串传递数据。 2、通过HTTP POST传递数据。 3、通过会话状态传递数据。 4、通过源页的公共属性传递数据。 5...

WEB小结(3)——BookStrap中标签页中载入别的网页

BookStrap是github上开源的前段设计框架,比较适合初学者使用,地址:http://www.bootcss.com/,其中有中文文档可以参考。 BookStrap中标签页的形式如下...

java与c数据类型小结及简单java和c的hello程序

本文主要基于讲叙最简单的java和c程序编写的区别,以及编译看效果,基于韦老师的视频,自己总结并重点分析了java与c数据类型的区别总结,不积跬步,无以至千里,基础知识是很容易被忽视及用错的,本文记录...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)