标题:asp.net的三种传值方式
只看楼主
hebingbing
Rank: 6Rank: 6
来 自:黄土高坡
等 级:贵宾
威 望:27
帖 子:3417
专家分:371
注 册:2007-10-22
结帖率:84.21%
 问题点数:0 回复次数:8 
asp.net的三种传值方式
web forms 给研发者提供了极好的事件驱动研发模式。然而这种简单的应用程式研发模式却给我们带来了一些小问题,举个例子,在传统的asp应用程式中,您能够通过post方法很容易的把一个值或多个值从一个页面传送到另一个页面,用同样的方法在中实现有点麻烦。在这里,我们能够通过其他方式来解决这种情形。为我们提供了三种方式,一种是能够通过用querystring来传送相应的值,再一种是通过session变量来传送相应的值,更有就是通过server.transfer方法来实现。下面分别一一介绍:

一、使用querystring
querystring是一种很简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象。假如您想传递一个安全性不是那么太重要或是个简单的数值时,用此方法最好但是了。下面通过一个小例子来完成传值工作,步骤如下:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个textbox1,textbox2
3、为button按钮创建click事件
代码如下:
private void button1_click
(object sender, system.eventargs e)
{
string url;
url="webform2.aspx?name=" +
textbox1.text + "&email=" +
textbox2.text;
response.redirect(url);
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个label1,label2
在webform2的page_load中添加如下代码:
private void page_load
(object sender, system.eventargs e)
{
label1.text=request.querystring["name"];
label2.text=request.querystring["email"];
}
运行,即可看到传递后的结果了。

二、使用session变量

使用session变量传值是一种最常见的方式了,此中方式不但能够把值传递到下一个页面,还能够交叉传递到多个页面,直至把session变量的值removed后,变量才会消失。举个例子看看:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个textbox1,textbox2
3、为button按钮创建click事件
代码如下:
private void button1_click
(object sender, system.eventargs e)
{
session["name"]=textbox1.text;
session["email"]=textbox2.text;
response.redirect("webform2.aspx");
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个label1,label2
在webform2的page_load中添加如下代码:
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、创建一个web form
2、在新建的web form中放置一个button1,在放置两个textbox1,textbox2
3、为button按钮创建click事件
代码如下:
private void button1_click
(object sender, system.eventargs e)
{
server.transfer("webform2.aspx");
}
4、创建过程来返回textbox1,textbox2控件的值代码如下:
public string name
{
get
{
return textbox1.text;
}
}

public string email
{
get
{
return textbox2.text;
}
}
5、新建一个目标页面命名为webform2
6、在webform2中放置两个label1,label2
在webform2的page_load中添加如下代码:
private void page_load
(object sender, system.eventargs e)
{
//创建原始窗体的实例
webform1 wf1;
//获得实例化的句柄
wf1=(webform1)context.handler;
label1.text=wf1.name;
label2.text=wf1.email;

}
运行,即可看到传递后的结果了。
搜索更多相关主题的帖子: 传值 asp web 程式 变量 
2008-03-25 13:39
寂寞的刺猬
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-3-23
得分:0 
难道就仅仅这3种方式可以传值吗???。。。。。。。。。。

我的博客  http://wlb.wlb.blog.
2008-03-27 00:24
hebingbing
Rank: 6Rank: 6
来 自:黄土高坡
等 级:贵宾
威 望:27
帖 子:3417
专家分:371
注 册:2007-10-22
得分:0 
回复 2# 的帖子
当然不是了,只不过这三是最常用的了,像datakeyfield等等也是可以的……
2008-03-27 12:17
shezhenhui1989
Rank: 1
来 自:安徽
等 级:新手上路
帖 子:287
专家分:0
注 册:2008-2-1
得分:0 
学习,中全局变量怎么使用啊?
2008-03-27 13:49
wyg4859
Rank: 2
等 级:新手上路
威 望:4
帖 子:883
专家分:0
注 册:2006-8-2
得分:0 
方法一:web.config   
设置:
<configration>
<appSettings>
<add key="connString1" value="server=localhost;user id=sa;pwd=;database=数据库名字"/>
<add key="connString2" value="provider=Microsoft.Jet.OleDb.4.0;Data Source=数据库路径"/>
</appSettings>
<system.web>
</system.web>
</configration>
读取:
using System.Configuration;
string conn1 = ConfigurationManage.AppSettings["connString1"];
方法二:Gloab文件
设置:
protected void Session_Start(Object sender, EventArgs e)
{
Session["sqlConnectionString"] = "uid=Username;pwd=password;database=MyTest;server=Localhost;Connect Timeout=300";
}

读取:
String strConnection=Session["sqlConnectionString"].ToString();

http://www.找到组织!找到党!
2008-03-27 13:57
残影留香
Rank: 1
来 自:广西南宁
等 级:新手上路
帖 子:193
专家分:0
注 册:2008-3-19
得分:0 
传值的时候,要从安全性方面多加考虑!!!!!!!!
2008-03-28 10:01
mycroo
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-3-28
得分:0 
好,顶一个,呵呵
2008-03-28 14:53
三笔
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-12
得分:0 
学习了```
2008-03-29 07:20
zyp860527
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-10-4
得分:0 
希望你够从中学到更多有用的东西,谢谢了!
2009-08-14 16:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-205251-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.314372 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved