zoukankan      html  css  js  c++  java
  • ASP.NET页面间数据传递(转)

       ASP.NET较ASP最大的优点,也是其受到越来越多程序员的欢迎的主要原因就是,ASP.NET为开发者提供了事件驱动的开发模式,从此程序员可以像利用可视化编程工具开发Windows应用程序一样来开发ASP.NET的基于Web页面的应用程序了。

    一般稍微庞大的ASP.NET程序至少拥有二个或以上的Web页面,程序员在开发类似ASP.NET应用程序时一般都需要处理在多个Web页面传递数据的问题。我们知道ASP.NET程序中的各个Web页面类似于Windows应用程序中的Form窗体,但ASP.NET程序中的各Web的组织结构比起Windows应用程序中各Form窗体要显得松散许多。Windows应用程序中的各Form窗体间数据传递可以通过定义全局变量(Public static 变量)等方法来实现。而这些方法却无法用以ASP.NET中各Web页面数据传递,所以就必须寻找另外的方法。本文就来介绍二种可以实现ASP.NET中各Web页面数据传递的方法:

    第一种方法是使用QueryString,

    第二种方法是使用Session.

    一。本文程序设计和运行的软件环境:

    (1)。微软公司视窗2000服务器版。

    (2)。Visual Studio .Net正式版,。Net FrameWork SDK版本号3705.

    二。使用QueryString实现Web页面间数据传递:

    QueryString实现Web页面间传递数据是一种比较老的方法,在ASP时就是使用这种方法实现不同Web页面间数据传递的。这种方法的最大的优点就是简单,但其缺点也是非常明显的,就是其安全性比较差,具体表现在从源页面向目标页面传递数据时,页面间传递的数据将会显现在目标页面的地址栏中,具体可见图05中的地址栏。还有使用 QueryString只能在页面间传递数量有限的数据,并且不可以传递Object类型的数据。以下就是ASP.NET页面间数据传递的具体实现步骤,所使用的开发工具是Visual Studio .Net,开发语言是C#。实现的功能是把源页面(WebForm1.aspx)中的二个TextBox中的数据传递到目标页面中,并通过目标页面(WebForm2.aspx)中的二个Label显示从源页面中传递来的数据:

      1. 启动Visual Studio .Net.

    2. 选择菜单「文件」|「新建」|「项目」后,弹出「新建项目」对话框。

      3. 将「项目类型」设置为「Visual C#项目」。

      4. 将「模板」设置为「ASP.NET Web 应用程序」。

      5. 在「位置」的文本框中输入"http://localhost/WebApplication4". 然后单击「确定」按钮,这样在Visual Studio .Net就会在当前项目文件所在目录中建立一个名称为"WebApplication4"文件夹,里面存放是此项目的项目文件,项目中的其他文件存放的位置是计算机Internet信息服务的默认的Web站点所在的目录中新建的一个名称为"WebApplication4"的文件夹中。

    具体如图01所示: 的默认的Web站点所在的目录中新建的一个名称为"WebApplication4"的文件夹中。

    具体如图01所示:时就是使用这种方法实现不同Web页面间数据传递的。

    这种方法的最大的优点就是简单,但其缺点也是非常明显的,就是其安全性比较差,具体表现在从源页面向目标页面传递数据时,页面间传递的数据将会显现在目标页面的地址栏中,具体可见图05中的地址栏。还有使用 QueryString只能在页面间传递数量有限的数据,并且不可以传递Object类型的数据。以下就是ASP.NET页面间数据传递的具体实现步骤,所使用的开发工具是Visual Studio .Net,开发语言是C#。实现的功能是把源页面(WebForm1.aspx)中的二个TextBox中的数据传递到目标页面中,并通过目标页面(WebForm2.aspx)中的二个Label显示从源页面中传递来的数据:

      1. 启动Visual Studio .Net.

    2. 选择菜单「文件」|「新建」|「项目」后,弹出「新建项目」对话框。

      3. 将「项目类型」设置为「Visual C#项目」。

      4. 将「模板」设置为「ASP.NET Web 应用程序」。

      5. 在「位置」的文本框中输入"http://localhost/WebApplication4". 然后单击「确定」按钮,这样在Visual Studio .Net就会在当前项目文件所在目录中建立一个名称为"WebApplication4"文件夹,里面存放是此项目的项目文件,项目中的其他文件存放的位置是计算机Internet信息服务的默认的Web站点所在的目录中新建的一个名称为"WebApplication4"的文件夹中。具体如图01所示:的默认的Web站点所在的目录中新建的一个名称为"WebApplication4"的文件夹中。具体如图01所示:的默认的Web站点所在的目录中新建的一个名称为"WebApplication4"的文件夹中。具体如图01所示:的默认的Web站点所在的目录中新建的一个名称为"WebApplication4"的文件夹中。具体如图01所示:

    图01:新建一个ASP.NET项目对话框

      6. 单击菜单【项目】|【添加Web窗体】,则弹出的【添加新项】对话框,将对话框【模板】设置为【Web窗体】,在【名称】文本框中输入 "WebForm2.aspx"后单击【打开】按钮,则在此项目中加入另外一个新的窗体"WebForm2.aspx",具体如图02所示:

    图02:【添加新项】对话框

       7. 把Visual Studio .Net的当前页面设置为WebForm1.aspx页面的设计界面,并从【工具箱】中的【Web窗体】选项卡中往WebForm1.aspx页面中拖入下列组件,并执行相应的操作:

       二个TextBox组件,分别用来输入向目标窗体传递的数据。

       一个Button组件,用以实现源页面向目标页面传递数据,并在这个Button组件拖入WebForm1.aspx设计页面后,双击它,则系统会在WebForm1.aspx..cs文件中自动产生这个组件的Click事件对应的处理代码。WebForm1.aspx设计后的页面如图03所示:

    图03:WebForm1.aspx设计后的页面

       8. 把Visual Studio .Net的当前页面设置为WebForm2.aspx页面的设计界面,并从【工具箱】中的【Web窗体】选项卡中往WebForm2.aspx页面中拖入下列组件,并执行相应的操作:

       二个Label组件,用以显示源页面向目标页面传递的数据。

       双击WebForm2.aspx设计页面,则系统会在WebForm2.aspx..cs文件中自动Page页面的Load事件对应的处理代码。程序将在此事件中接收源页面向目标页面传递来的数据,并通过Lable组件显示出来。WebForm2.aspx设计后的页面如图04所示:

    图04:WebForm2.aspx设计后的页面

       9. 把Visual Studio .Net的当前窗口切换到WebForm1页面的代码编辑窗口,即:WebForm1.aspx.cs文件的编辑窗口。用下列代码替换 WebForm1.aspx.cs中的Button1组件的Click事件对应的处理代码,下列代码的功能是实现源页面向目标页面传递数据:

    private void Button1_Click ( object sender , System . EventArgs e )
     {
     
    string sUrl; //定义一个字符串,此字符串中包含源页面向目标传递的数据
     sUrl = "WebForm2.aspx?name=" + TextBox1 . Text + "&email=" + TextBox2 . Text ; //从源页面中获得传递的数据
     Response . Redirect ( sUrl ) ; //向目标页面传递数据
     } 
     
    10. 把Visual Studio .Net的当前窗口切换到WebForm2页面的代码编辑窗口,即:WebForm2.aspx.cs文件的编辑窗口。用下列代码替换 WebForm2.aspx.cs中Page的Load事件对应的处理代码,下列代码的功能是从源页面中接收数据,并通过相应组件显示接收到的数据:
    private void Page_Load ( object sender , System . EventArgs e )
     {
     Label1 . Text 
    = Request . QueryString [ "name" ] ; //使用QueryString从源页面中接收name变量数据,并通过Label1显示
     Label2 . Text = Request . QueryString [ "email" ] ; //使用QueryString从源页面中接收email变量数据,并通过Label2显示
     
    // 在此处放置用户代码以初始化页面
     }
    11. 至此第一种实现ASP.NET页面间数据传递的方法就介绍完了,此时单击快捷键【F5】运行程序,并在第一个页面中二个TextBox组件分别输入"阿虎 "、"ahah@etang.com "后,具体如图05所示,再单击页面中的Button1按钮,则会得到图06所示的页面,可见的确把源页面中的数据传递到了目标页面中:

    图05:运行页面01

    图06:运行页面02   

    三.使用Session实现Web页面间数据传递:

       Session会话是编写网页时经常遇到的概念,使用Session传递数据虽然可以克服在使用QueryString时的缺点,但大量的使用则有可能导致服务器的瘫痪,尤其是浏览量非常大的页面,使用Session就尤其要注意。解决的办法就是Session使用结束后,必须清除。以下就是在ASP.NET中使用Session传递数据的一般步骤,使用的开发工具是Visual Studio .Net,语言是C#:

       1. 启动Visual Studio .Net。

       2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。

       3. 将【项目类型】设置为【Visual C#项目】。

      4. 将【模板】设置为【ASP.NET Web 应用程序】。

       5. 在【位置】的文本框中输入"http://localhost/session"。然后单击【确定】按钮,这样在Visual Studio .Net就会在当前项目文件所在目录中建立一个名称为"session"文件夹,里面存放是此项目的项目文件,项目中的其他文件存放的位置是计算机 Internet信息服务的默认的Web站点所在的目录中新建的一个名称为"session"的文件夹中。具体如图07所示:

    图07:新建一个ASP.NET项目对话框

       6. 按照QueryString实现步骤中的第六步来操作,在session项目中新建一个Web页面,名称为"WebForm2.aspx"。

       7. 按照QueryString实现步骤中的第七步来操作,在WebForm1.aspx页面中创建二个TextBox组件、一个Button组件,并在WebForm1.aspx.cs中创建此Button组件的Click事件对应的处理代码。

       8. 按照QueryString实现步骤中的第八步来操作,在WebForm2.aspx页面中创建二个Label组件,并在WebForm2.aspx.cs中创建此Page页面的Load事件对应的处理代码。

       9. 把Visual Studio .Net的当前窗口切换到WebForm1页面的代码编辑窗口,即:WebForm1.aspx.cs文件的编辑窗口。用下列代码替换 WebForm1.aspx.cs中的Button1组件的Click事件对应的处理代码,下列代码的功能是使用Session实现源页面向目标页面传递数据:

    private void Button1_Click ( object sender , System . EventArgs e )
     {
     Session [ 
    "name" ] = TextBox1 . Text ; //创建Session变量,用以存放TextBox1组件中的数据
     Session [ "email" ] = TextBox2 . Text ; //创建Session变量,用以存放TextBox2组件中的数据
     Server . Transfer ( "WebForm2.aspx" ) ; //向目标页面传递数据,如果你是其他页面则替换上面的WebForm2.aspx
     }
    10. 把Visual Studio .Net的当前窗口切换到WebForm2页面的代码编辑窗口,即:WebForm2.aspx.cs文件的编辑窗口。用下列代码替换 WebForm2.aspx.cs中Page的Load事件对应的处理代码,下列代码的功能是从源页面中接收数据,并通过相应组件显示接收到的数据,并清除创建的Session变量:
    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" ) ; //清除创建的Session的变量 
    // 在此处放置用户代码以初始化页面
     } 

      11. 至此在ASP.NET使用Session实现Web页面间数据传递的方法就介绍完了,此时单击快捷键【F5】运行程序就可以得到如图05和图06所示的运行界面。   

    四.总结:

       本文介绍了二种在ASP.NET这实现Web页面间数据传递的方法,即:QueryString和Session。这二种方法可由千秋又各自拥有无法克服的缺点。总结起来就是QueryString相当简单,Session相对复杂;QueryString安全性差,Session安全性高; QueryString可实现各Web页面简单数据传递,一般就是字符串类型,Session可实现各Web页面间复杂类型数据的传递等等。当然在 ASP.NET中实现Web页面数据传递的方法除了上述方法,肯定还可能存在其他更好、更简单的,如有机会,希望能够共同探讨。

  • 相关阅读:
    google搜索教程
    phoenix/stack-five
    phoenix/stack-four
    phoenix/stack-three
    phoenix/stack-one
    fork 在 Linux 内核里面的实现
    无文件执行 ELF
    glibc 堆内存管理杂记
    QOS shaping 知识要点
    QOS CQ
  • 原文地址:https://www.cnblogs.com/wangpei/p/1356910.html
Copyright © 2011-2022 走看看