ASPNET较ASP最大的优点也是其受到越来越多程序员的欢迎的主要原因就是ASPNET为开发者提供了事件驱动的开发模式从此程序员可以像利用可视化编程工具开发Windows应用程序一样来开发ASPNET的基于Web页面的应用程序了
一般稍微庞大的ASPNET程序至少拥有二个或以上的Web页面程序员在开发类似ASPNET应用程序时一般都需要处理在多个Web页面传递数据的问题我们知道ASPNET程序中的各个Web页面类似于Windows应用程序中的Form窗体但ASPNET程序中的各Web的组织结构比起Windows应用程序中各Form窗体要显得松散许多Windows应用程序中的各Form窗体间数据传递可以通过定义全局变量(Public static 变量)等方法来实现而这些方法却无法用以ASPNET中各Web页面数据传递所以就必须寻找另外的方法本文就来介绍二种可以实现ASPNET中各Web页面数据传递的方法第一种方法是使用QueryString第二种方法是使用Session
一.本文程序设计和运行的软件环境
()微软公司视窗服务器版
()Visual Studio Net正式版Net FrameWork SDK版本号
二.使用QueryString实现Web页面间数据传递
QueryString实现Web页面间传递数据是一种比较老的方法在ASP时就是使用这种方法实现不同Web页面间数据传递的这种方法的最大的优点就是简单但其缺点也是非常明显的就是其安全性比较差具体表现在从源页面向目标页面传递数据时页面间传递的数据将会显现在目标页面的地址栏中具体可见图中的地址栏还有使用QueryString只能在页面间传递数量有限的数据并且不可以传递Object类型的数据以下就是ASPNET页面间数据传递的具体实现步骤所使用的开发工具是Visual Studio Net开发语言是C#实现的功能是把源页面(WebFormaspx)中的二个TextBox中的数据传递到目标页面中并通过目标页面(WebFormaspx)中的二个Label显示从源页面中传递来的数据
启动Visual Studio Net
选择菜单【文件】|【新建】|【项目】后弹出【新建项目】对话框
将【项目类型】设置为【Visual C#项目】
将【模板】设置为【ASPNET Web 应用程序】
在【位置】的文本框中输入http://localhost/WebApplication然后单击【确定】按钮这样在Visual Studio Net就会在当前项目文件所在目录中建立一个名称为WebApplication文件夹里面存放是此项目的项目文件项目中的其他文件存放的位置是计算机Internet信息服务的默认的Web站点所在的目录中新建的一个名称为WebApplication的文件夹中具体如图所示
图新建一个ASPNET项目对话框
单击菜单【项目】|【添加Web窗体】则弹出的【添加新项】对话框将对话框【模板】设置为【Web窗体】在【名称】文本框中输入WebFormaspx后单击【打开】按钮则在此项目中加入另外一个新的窗体WebFormaspx具体如图所示
图【添加新项】对话框
把Visual Studio Net的当前页面设置为WebFormaspx页面的设计界面并从【工具箱】中的【Web窗体】选项卡中往WebFormaspx页面中拖入下列组件并执行相应的操作
二个TextBox组件分别用来输入向目标窗体传递的数据
一个Button组件用以实现源页面向目标页面传递数据并在这个Button组件拖入WebFormaspx设计页面后双击它则系统会在WebFormaspxcs文件中自动产生这个组件的Click事件对应的处理代码WebFormaspx设计后的页面如图所示
图WebFormaspx设计后的页面
把Visual Studio Net的当前页面设置为WebFormaspx页面的设计界面并从【工具箱】中的【Web窗体】选项卡中往WebFormaspx页面中拖入下列组件并执行相应的操作
二个Label组件用以显示源页面向目标页面传递的数据
双击WebFormaspx设计页面则系统会在WebFormaspxcs文件中自动Page页面的Load事件对应的处理代码程序将在此事件中接收源页面向目标页面传递来的数据并通过Lable组件显示出来WebFormaspx设计后的页面如图所示
图WebFormaspx设计后的页面
把Visual Studio Net的当前窗口切换到WebForm页面的代码编辑窗口即WebFormaspxcs文件的编辑窗口用下列代码替换WebFormaspxcs中的Button组件的Click事件对应的处理代码下列代码的功能是实现源页面向目标页面传递数据
private void Button_Click ( object sender System EventArgs e )
{
string sUrl;
//定义一个字符串此字符串中包含源页面向目标传递的数据
sUrl = WebFormaspx?name= +
TextBox Text + &email= +
TextBox Text ;
//从源页面中获得传递的数据
Response Redirect ( sUrl ) ;
//向目标页面传递数据
}
把Visual Studio Net的当前窗口切换到WebForm页面的代码编辑窗口即WebFormaspxcs文件的编辑窗口用下列代码替换WebFormaspxcs中Page的Load事件对应的处理代码下列代码的功能是从源页面中接收数据并通过相应组件显示接收到的数据
private void Page_Load ( object sender System EventArgs e )
{
Label Text = Request QueryString [ name ] ;
//使用QueryString从源页面中接收name变量数据并通过Label显示
Label Text = Request QueryString [ email ] ;
//使用QueryString从源页面中接收email变量数据并通过Label显示
// 在此处放置用户代码以初始化页面
}
至此第一种实现ASPNET页面间数据传递的方法就介绍完了此时单击快捷键【F】运行程序并在第一个页面中二个TextBox组件分别输入阿虎ahah@etangcom 后具体如图所示再单击页面中的Button按钮则会得到图所示的页面可见的确把源页面中的数据传递到了目标页面中
图运行页面
图运行页面
三.使用Session实现Web页面间数据传递
Session会话是编写网页时经常遇到的概念使用Session传递数据虽然可以克服在使用QueryString时的缺点但大量的使用则有可能导致服务器的瘫痪尤其是浏览量非常大的页面使用Session就尤其要注意解决的办法就是Session使用结束后必须清除以下就是在ASPNET中使用Session传递数据的一般步骤使用的开发工具是Visual Studio Net语言是C#
启动Visual Studio Net
选择菜单【文件】|【新建】|【项目】后弹出【新建项目】对话框
将【项目类型】设置为【Visual C#项目】
将【模板】设置为【ASPNET Web 应用程序】
在【位置】的文本框中输入http://localhost/session然后单击【确定】按钮这样在Visual Studio Net就会在当前项目文件所在目录中建立一个名称为session文件夹里面存放是此项目的项目文件项目中的其他文件存放的位置是计算机Internet信息服务的默认的Web站点所在的目录中新建的一个名称为session的文件夹中具体如图所示
图新建一个ASPNET项目对话框
按照QueryString实现步骤中的第六步来操作在session项目中新建一个Web页面名称为WebFormaspx
按照QueryString实现步骤中的第七步来操作在WebFormaspx页面中创建二个TextBox组件一个Button组件并在WebFormaspxcs中创建此Button组件的Click事件对应的处理代码
按照QueryString实现步骤中的第八步来操作在WebFormaspx页面中创建二个Label组件并在WebFormaspxcs中创建此Page页面的Load事件对应的处理代码
把Visual Studio Net的当前窗口切换到WebForm页面的代码编辑窗口即WebFormaspxcs文件的编辑窗口用下列代码替换WebFormaspxcs中的Button组件的Click事件对应的处理代码下列代码的功能是使用Session实现源页面向目标页面传递数据
private void Button_Click ( object sender System EventArgs e )
{
Session [ name ] = TextBox Text ;
//创建Session变量用以存放TextBox组件中的数据
Session [ email ] = TextBox Text ;
//创建Session变量用以存放TextBox组件中的数据
Server Transfer ( WebFormaspx ) ;
//向目标页面传递数据如果你是其他页面则替换上面的WebFormaspx
}
把Visual Studio Net的当前窗口切换到WebForm页面的代码编辑窗口即WebFormaspxcs文件的编辑窗口用下列代码替换WebFormaspxcs中Page的Load事件对应的处理代码下列代码的功能是从源页面中接收数据并通过相应组件显示接收到的数据并清除创建的Session变量
private void Page_Load ( object sender System EventArgs e )
{
Label Text = Session [ name ] ToString ( ) ;
Label Text = Session [ email ] ToString ( ) ;
//从源页面中接收数据显示出来
Session Remove ( name ) ;
Session Remove ( email ) ;
//清除创建的Session的变量
// 在此处放置用户代码以初始化页面
}
至此在ASPNET使用Session实现Web页面间数据传递的方法就介绍完了此时单击快捷键【F】运行程序就可以得到如图和图所示的运行界面
四.总结
本文介绍了二种在ASPNET这实现Web页面间数据传递的方法即QueryString和Session这二种方法可由千秋又各自拥有无法克服的缺点总结起来就是QueryString相当简单Session相对复杂QueryString安全性差Session安全性高QueryString可实现各Web页面简单数据传递一般就是字符串类型Session可实现各Web页面间复杂类型数据的传递等等当然在ASPNET中实现Web页面数据传递的方法除了上述方法肯定还可能存在其他更好更简单的如有机会希望能够共同探讨