• Web程序中网页间数据传递方法小结


     

    Response.Redirect

    让我们首先看一看如何使用Response.Redirect方法传递数据。这是它们之中最简单的方法。在文本框中输入一些数据,并且当你输入完成数据后,按下“Respose.Redirect”按钮。我们会得到一个提示,有时我们想在catch程序中传递另一个网页,意味着捕捉到例外程序并且向另一个网页传递。如果你试图这样做,它会给你一个System.Threading例外程序。因为你想遗留下一个线程向另一个网页传递数据,所以这个例外程序就会被抛出。

    Response.Redirect("WebForm5.aspx",false);

      这个语句告诉编译器定位到“WebForm5.aspx”,这里的“false”意味着在当前网页不能结束你正在做的事情。应该看一看线程发布命令的System.Threading类。在下面,看一看按钮事件的C#代码。“txtName”文本控件的名字,文本框的内的值传递到一个叫做“WebForm5.aspx”的网页。在之后的“Name”符号只是一个临时的响应变量,这个变量保持着文本的数值。

    private void Button1_Click(object sender, System.EventArgs e)
    {
     // Value sent using HttpResponse
     Response.Redirect("WebForm5.aspx?Name="+txtName.Text);
    }

      好的,到这种观点为止,你使用Response发送了数值。刚刚,在此我收集到了这些数值,所以在“WebForm5.aspx”page_Load事件中,写入这些代码。首先,我们检查到输入的值不为null。如果不是这样,我们只是简单地在网页上使用Label控件显示数值。注意:如果你使用Response.Redirect方法来传递这些数值,所有这些数值在浏览器的URL中都是不可见的。你绝不能使用Response.Redirect来传递信用证号码和机密信息。

    if (Request.QueryString["Name"]!= null)
    Label3.Text = Request.QueryString["Name"];

    Cookies

    接下来使用CookiesCookies在服务器端创建,但是客户端省略。在此 “Cookies” 按钮的click事件中,写入以下代码:

    HttpCookie cName = new HttpCookie("Name");
    cName.Value = txtName.Text;
    Response.Cookies.Add(cName);
    Response.Redirect("WebForm5.aspx");

      首先,创建一个cookie命名为“cName”。既然一个cookie实例可以拥有许多数值,告诉编译器这个cookie持有“Name”数值。我们将它赋值给TextBox并且最结后将它加入Response流,再使用Response.Redirect方法传递给其它网页。

      让我们看一看如何得到被另一个网页传递的cookie数值。

    if (Request.Cookies["Name"] != null )
    Label3.Text = Request.Cookies["Name"].Value;

      如你所看到的,象我们以前做一的一样正是使用同一种方法,刚刚我们在Request.QueryString之内,使用了Request.Cookies。记注一些浏览器不接收cookies

    Session Variables

    接下来我们看一看session变量,这些变量由服务器来处理。第一个响影一从客户端传递到服务器,Sessions就创建了,并且当用户关闭浏览器窗口或者一些异常操作发生,session就会结束。给你一些可以使用session变量来传递数值的方法。在下面你看到为用户创建的Session “Name”是关键字,也如知名的Session关键字一样,关键字被赋给TextBox数值。

    // Session Created

    Session["Name"] = txtName.Text;
    Response.Redirect("WebForm5.aspx");

    // The code below shows how to get the session value.
    // This code must be placed in other page.

    if(Session["Name"] != null)
     Label3.Text = Session["Name"].ToString(); 

    Application Variables

    有时,我们需要存取来自网页任何地方的数值。因为那样,可以使用Application变量。这里有一小段代码,这段代码显示如何做到那些事情。一旦创建Application变量并且为其赋值,在应用程序的任何地方都可以重新得到它的值。

    // This sets the value of the Application Variable

    Application["Name"] = txtName.Text;
    Response.Redirect("WebForm5.aspx");

    // This is how we retrieve the value of the Application Variable

    if( Application["Name"] != null )
    Label3.Text = Application["Name"].ToString();

    HttpContext

      可以使用HttpContext从网页中重新得到数值。通过使用方法的属性获得那些数值。既然它们易于编写代码和修改,使用属性是一种好方法。在你的第一个网页中,制造一个属性,这个属性可以返回TextBox的值。

    public string GetName
    {
     get { return txtName.Text; }
    }

      我们使用Server.Transfer来将此控件发送到一个新网页。注意:Server.Transfer仅仅将此控件传递到新的网页并且不重新定位该网页,这意味着你会看到在URL中旧网页的地址。简单地在“Server.Transfer”按钮单击事件,并且增加下列代码。

    Server.Transfer("WebForm5.aspx");

      现在,让我们定位网页,数值就传递到该网页上,在这种情况下使用的该网页是“webForm5.aspx”

    // You can declare this Globally or in any event you like

    WebForm4 w;

    // Gets the Page.Context which is Associated with this page

    w = (WebForm4)Context.Handler;

    // Assign the Label control with the property "GetName" which returns string

    Label3.Text = w.GetName;
    Special Note

      特别注意 与你看到的一样,从一个网页向别一网页传递数值时有不同的方法。每一个方法有它自己的优点也有其缺点。所以,当你传递数值时,选择好你所需要的所以你就会有一种好方法,这种方法对你是最为可行的。

  • 相关阅读:
    面向对象的三大特性(封装、继承、多态)-----继承
    前端---HTML
    几个排序算法的python实现
    构造方法关键字---this
    构造方法中关键字-- super
    多态(instanceof)
    接口
    抽象
    继承(重写与重载对比)
    数组的逆序
  • 原文地址:https://www.cnblogs.com/huazai8204/p/547922.html
Copyright © 2020-2023  润新知