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页面数据传递的方法除了上述方法,肯定还可能存在其他更好、更简单的,如有机会,希望能够共同探讨。

  • 相关阅读:
    归并排序(Merge Sort)
    AtCoder AGC035D Add and Remove (状压DP)
    AtCoder AGC034D Manhattan Max Matching (费用流)
    AtCoder AGC033F Adding Edges (图论)
    AtCoder AGC031F Walk on Graph (图论、数论)
    AtCoder AGC031E Snuke the Phantom Thief (费用流)
    AtCoder AGC029F Construction of a Tree (二分图匹配)
    AtCoder AGC029E Wandering TKHS
    AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)
    AtCoder AGC035E Develop (DP、图论、计数)
  • 原文地址:https://www.cnblogs.com/lynnlin/p/1226214.html
Copyright © 2011-2022 走看看