3.3 Request对象
学习目标
学习并掌握Request对象的使用方法。
3.3.1 Request对象功能描述
Request对象是HttpRequest类的一个实例。使用该对象可以读取浏览器已经发送的内容,以使ASP.NET能够读取客户端在Web请求期间发送的HTTP值。
3.3.2 常用集合
Request对象获取客户端页面发送的信息主要是通过其所包含的Form、QueryString、Cookies、ServerVariables4个集合来实现的。
1.Form集合
在传统的ASP程序开发环境中,Request.Form集合使用相当频繁,因为HTML表单的传值多数都是使用该集合来接收信息,而在ASP.NET中该集合依然被继承下来为了和ASP中的某些功能兼容,只是在ASP.NET环境中引入了Web控件,比传统的ASP表单要灵活很多,所有很少用到HTML表单标签,Request.Form集合使用的地方也就很少。
接下来举例说明Request .Form集合的用法。
(1)在ASP.NET网站项目StudyObject中添加页面StudyRequestForm.aspx,并在工具箱中的“标准”选项卡中选择一个文本框和一个普通按钮控件添加到页面,布局页面如图3-4所示。
(2)在图3-4中双击“确定”按钮进入该按钮的单击事件代码窗口,编写如下代码接收表单传递的值并输出。
protected void btnConfirm_Click(object sender, EventArgs e) { string Name = Request.Form["txtName"] .ToString(); //string Name = txtName.Text; Response.Write(Name); }
(3)按Ctrl+F5组合键运行后,在显示的“姓名”文本框中输入“张三丰”,单击“确定”按钮,显示效果如图3-5所示。
(4)其实,“确定”按钮中的代码"string Name = Request.Form["txtName"].ToString( );”
完全可以使用"string Name = txtName.Text; ”
代码替换,而且后面的代码更能体现出Web控件的编程特征,所以在开发ASP.NET程序时很少使用Request.Form集合。
2.QueryString集合
如果应用程序从一个ASP.NET网页重定向(导航)到另一个ASP.NET网页,经常希望将信息从源页传递到目标页。例如,可能具有一个新闻列表页面,用户可以从中选择某个新闻标题以查看该标题的详细内容。此时就可以采用查询字符串的方式把新闻标题的编号追加到目标页的URL,在目标页就可以采用Request.QueryString集合来获取传递过来的信息然后做处理输出。
接下来举例说明Request.QueryString集合的用法。
(1)在ASP.NET网站项目StudyObject中添加页面StudyRequestQueryString.aspx,在其中的Page_Load事件中编写如下代码。
protected void Page_Load(object sender, EventArgs e) { string id = Request.QueryString["id']; Response.Write(id + "<br /><br />"); for (int i = 1; i <= 5; i++) { Response.Write("<a href=' ?id=" + i.ToString() + "'> 测试信息" + i.ToString() + "</a><br /><br />"); } }
(2)按Ctrl+F5组合键,页面运行效果如图3-6所示。
(3)在图3-6中单击第三个测试信息,页面上面将输出3,当然在实际程序中就可以使用接收到的值做相关的处理,页面运行显示效果如图3-7所示。
3.ServerVariables集合
在浏览器中浏览网页的时候使用的传输协议是HTTP,在HTTP的标题文件中会记录一些客户端的信息,如客户的IP地址等,有时服务器端需要根据不同的客户端信息做出不同的反映,这时候就需要用ServerVariables集合获取所需信息。
语法:Request.ServerVariables[“服务器环境变量”];
接下来举例说明Request.ServerVariables的使用方法。
(1)在ASP.NET网站项目StudyObject中添加页面StudyRequestServerVariables.aspx,在其中的Page_Load事件中编写如下代码。
protected void Page_Load(object sender, EventArgs e) { Response.Write(Request.ServerVariables["remote_addr"]. ToString() + "<br>"); Response.Write(Request.ServerVariables["http_user_agent"]. ToString() + "<br>"); }
(2)按Ctrl+F5组合键,页面运行效果如图3-8所示。