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