.net如何实现页面间的参数传递
以前asp可以使用form表单进行post,或者用url +参数的方法将数据传递到下一个页面,而接收数据可以用相应的 request.form()和request.querystring ,现今转到.net开发了,到没看到一本书有这方面的介绍,没有一段原码带这方面的内容,一般都是是用 runat server 的form表单,数据有相应的.cs文件进行处理实在是不习惯,如果要出现页面的跳转并传递一定的参数呢? 郁闷!望高人指点我跨这个门槛! 问题点数:100、回复次数:16Top
1 楼devfan(小星)回复于 2004-08-01 21:32:35 得分 60
使用QueryString
使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下:
1,使用控件创建web表单(form)
2,创建可以返回表单的按钮和链接按钮
3,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量
4,在保存的URL里添加QueryString参数
5,使用Response.Redirect重定向到上面保存的URL
下面的代码片断演示了如何实现这个方法:
源页面代码:
private void Button1_Click
(object sender, System.EventArgs e)
{
string url;
url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
Response.Redirect(url);
}
目标页面代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
使用Session变量
使用Session变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。使用Session变量传递值的一般步骤如下:
1,在页面里添加必要的控件
2,创建可以返回表单的按钮和链接按钮
3,在按钮或链接按钮的单击事件里,把控件的值添加到session变量里
4,使用Response.Redirect方法重定向到另一个页面
5,在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它
下面的代码片断演示了如何实现这个方法:
源页面代码:
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("anotherwebform.aspx");
}
目标页面代码:
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");
}
使用Server.Transfer
这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下:
1,在页面里添加必要的控件
2,创建返回值的Get属性过程
3,创建可以返回表单的按钮和链接按钮
4,在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面
5,在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了
以下代码综合实现上述步骤过程的代码:
源页面代码:
把以下的代码添加到页面中
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("anotherwebform.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;
}
Top
2 楼myxs(【acy_scdy】)回复于 2004-08-01 21:32:52 得分 5
.NET中也可以用ASP里的东西。request.querystring等或是SessionTop
3 楼sz80(虫子)回复于 2004-08-01 21:40:29 得分 5
同ASP一样
Top
4 楼jierry007(风起云涌)回复于 2004-08-01 21:48:39 得分 5
HttpRequest.Params
获取 QueryString、Form、ServerVariables 和 Cookies 项的组合集合。Top
5 楼huangsuipeng(hsp|I love foxpig)回复于 2004-08-01 21:49:48 得分 5
一楼基本讲了ASP。NET 1。X的解决方案
ASP。NET 2。0启用了跨页面传送功能Top
6 楼Proyang(小过)回复于 2004-08-01 21:52:53 得分 5
通过URL传递。
还有SESSION,APPLICATION,COOKIE。Top
7 楼codeangel(http://www.wSoft.Net)回复于 2004-08-02 08:15:54 得分 0
都讲完了,我讲什么?Top
8 楼sicainiao(死菜鸟乐乐)回复于 2004-08-02 08:21:33 得分 0
确实,该说的都给说完了。。。
现在我看就只差没有更详细的例子了。。。Top
9 楼goody9807(http://goody9807.cnblogs.com)回复于 2004-08-02 08:29:43 得分 0
讲完了Top
10 楼BillTuan()回复于 2004-08-02 08:33:16 得分 5
querystring 和session
Top
11 楼wnlovezxm(大垃圾人)回复于 2004-08-02 08:59:18 得分 0
路过!Top
12 楼guying999(求知)回复于 2004-08-02 09:04:03 得分 5
和ASP类似,也可以用链接URL+参数然后使用Request接受,还有可以通过Server,Session等Top
13 楼pinglv(Amanda)回复于 2004-08-02 09:06:35 得分 0
用Session挺方便的啊。Top
14 楼hertcloud(·£孙子兵法£·)回复于 2004-08-02 09:07:47 得分 5
huangsuipeng(hsp-ec.net)
ASP。NET 2。0启用了跨页面传送功能
讲下这个 或给个连接啊!
Top
15 楼tailer88(水)回复于 2004-08-02 09:12:14 得分 0
.net可以通过多种方法来实现页面参数传递,其中也包括ASP的方法~Top
16 楼pgwron(情伤无痕)回复于 2004-08-02 09:36:49 得分 0
建议采用 devfan(小星) 的第一种方法,比较适合ASP的老手Top




