软件开发视频大讲堂:ASP.NET从入门到精通(第4版)
上QQ阅读APP看书,第一时间看更新

2.1 Response对象

2.1.1 Response对象概述

Response对象用于将数据从服务器发送回浏览器。它允许将数据作为请求的结果发送到浏览器中,并提供有关响应的信息;还可以用来在页面中输入数据、在页面中跳转,并传递各个页面的参数。它与HTTP协议的响应消息相对应。

假如将用户请求服务器的过程比喻成客户到柜台买商品的过程,那么在客户描述要购买的商品(如功能、大小、颜色等)后,销售员就会将商品摆在客户的面前,这就相当于Response对象将数据从服务器发送回浏览器。

2.1.2 Response对象的常用属性和方法

Response对象将HTTP响应数据发送到客户端,并包含有关该响应的信息,其常用属性、方法及说明如表2.1和表2.2所示。

表2.1 Response对象的常用属性及说明

表2.2 Response对象的常用方法及说明

2.1.3 在页面中输出数据

Response对象通过Write方法或WriteFile方法在页面上输出数据。输出的对象可以是字符、字符数组、字符串、对象或文件。

【例2.1】在页面中输出数据(示例位置:光盘\TM\sl\02\01

本示例主要是使用Write方法和WriteFile方法实现在页面上输出数据。在运行程序之前,在F盘上新建一个WriteFile.txt文件,文件内容为“Hello World! ! ! Hello World! ! ! Hello World! ! ! Hello World! ! ! ”。执行程序,示例运行结果如图2.1所示。

图2.1 在页面输出数据

程序实现的主要步骤如下。

新建一个网站,默认主页为Default.aspx。在Default.aspx的Page_Load事件中先定义4个变量,分别为字符型变量、字符串变量、字符数组变量和Page对象,然后将定义的数据在页面上输出。代码如下:

        char c='a';                                     //定义一个字符变量
        string s="Hello World! ";                          //定义一个字符串变量
        char[] cArray={'H','e','l','l','o',', ','','w','o','r','l','d'};    //定义一个字符数组
        Page p=new Page();                            //定义一个Page对象
        Response.Write("输出单个字符");
        Response.Write(c);
        Response.Write("<br>");
        Response.Write("输出一个字符串"+s+"<br>");
        Response.Write("输出字符数组");
        Response.Write(cArray, 0, cArray.Length);
        Response.Write("<br>");
        Response.Write("输出一个对象");
        Response.Write(p);
        Response.Write("<br>");
        Response.Write("输出一个文件");
        Response.WriteFile(@"F:\WriteFile.txt");

注意

应用WriteFile方法输出一个文件时,该文件必须是已经存在的。如果不存在,将产生“未能找到文件”异常。

2.1.4 页面跳转并传递参数

Response对象的Redirect方法可以实现页面重定向的功能,并且在重定向到新的URL时可以传递参数。

例如,将页面重定向到welcome.aspx页的代码如下:

Response. Redirect ("~/welcome.aspx");

在页面重定向URL时传递参数,使用“? ”分隔页面的链接地址和参数,有多个参数时,参数与参数之间使用“&”分隔。

例如,将页面重定向到welcome.aspx页并传递参数的代码如下:

        Response.Redirect("~/welcome.aspx? parameter=one ");
        Response.Redirect("~/welcome.aspx? parameter1=one&parameter2=other");

【例2.2】页面跳转并传递参数。(示例位置:TM\sl\02\02

本示例主要通过Response对象的Redirect方法实现页面跳转并传递参数。执行程序,在TextBox文本框中输入姓名并选择性别,单击“确定”按钮,跳转到welcome.aspx页,示例运行结果如图2.2和图2.3所示。

图2.2 页面跳转传递参数

图2.3 重定向的新页

程序实现的主要步骤如下。

(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加1个TextBox控件、1个Button控件和2个RadioButton控件,它们的属性设置及用途如表2.3所示。

表2.3 Default.aspx页面中控件的属性设置及用途

在“确定”按钮的btnOK_Click事件中实现跳转到页面welcome.aspx并传递参数Name和Sex,代码如下:

        protected void btnOK_Click(object sender, EventArgs e)
        {
            string name=this.txtName.Text;
            string sex="先生";
            if(rbtnSex2 .Checked)
              sex="女士";
          Response.Redirect("~/welcome.aspx?Name="+name+"&Sex="+sex);
      }

注意

通过URL地址传递多个参数时,应使用“&”符号作为多个参数之间的连接符。

(2)在该网站中添加一个新页,将其命名为welcome.aspx。在页面welcome.aspx的初始化事件中获取Response对象传递过来的参数,并将其输出在页面上。代码如下:

        protected void Page_Load(object sender, EventArgs e)
        {
            string name = Request.Params["Name"];
            string sex = Request.Params["Sex"];
            Response.Write("欢迎"+name+sex+"! ");
        }

2.1.5 输出二进制图像

Response对象不但可以使用Write方法在页面上输出数据、使用WriteFile方法将文件内容在页面上输出,而且还可以使用BinaryWrite方法显示二进制表示的数据,如图像、图片等。

【例2.3】输出二进制图像。(示例位置:TM\sl\02\03

本示例主要通过Response对象的BinaryWrite方法实现输出二进制图像。执行程序,示例运行结果如图2.4所示。

图2.4 输出二进制图像

程序实现的主要步骤如下。

新建一个网站,默认主页为Default.aspx。首先引入System.IO命名空间,然后在Default.aspx页面初始化事件中将图片文件读取到文件流中,并将图像以二进制数据的形式输出到页面。代码如下:

        using System.IO;
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
              //打开图片文件,并保存在文件流中
              FileStream stream = new FileStream(Server.MapPath("picture.gif"), FileMode.Open);
              long FileSize=stream.Length;          //获取流的长度
              byte[] Buffer=new byte[(int)FileSize];     //定义一个二进制数组
              stream.Read(Buffer, 0, (int)FileSize);     //从流中读取字节块并将该数据写入给定缓冲区中
              stream.Close();                      //关闭流
              Response.BinaryWrite(Buffer);          //将图片输出在页面上
            }
        }

技巧

Response对象的Write方法与JavaScript脚本语言结合使用。

(1)弹出提示对话框

Response.Write方法主要用来在页面上输出信息。该方法还可以结合JavaScript脚本语言,弹出提示对话框。代码如下:

    Response.Write("<script>alert('Hello World! ')</script>");

(2)关闭窗口

在ASP.NET中没有提供直接关闭窗口的方法,但是可以使用JavaScript脚本关闭窗口。代码如下:

    Response.Write("<script>window.close(); </script>");