当在一个ASPNET Web页面中进行操作时在默认情况下向当前页进行提交这种行为在ASPNET出现之前并没有什么关系但在ASPNET中当我们想向另外一个Web页提交一个Web Form时该如何做呢?在ASPNET中这个问题变得很难解决但在ASPNET中为开发人员提供了更容易的解决的技术跨网页提交这种技术允许一个网页在提交数据时提交给另外的一个页面在跨网页提交中用于初始化提交代码的页面叫源页面而客户提交的页面叫目标页面
为了方便起见目标页面仍然获得原页面提交的所有数据换名话说从技术观点出发我们可以用同样的方式处理其他ASPNET页面提交的数据
这个新特性意味着ASPNET开发人员目前有三种可供选择的技术来将数据从一个web页面传送到另外一个页面这三种方法是响应重定向服务端传输和新的跨网页提交特性我们可以已经熟悉前两种技术了因此我们只是简要地复习一下它们然后我们会将主要精力放到学习如何使用跨网页提交特性以及阐述一下这种方法和响应重定向以及服务传输方式有什么不同
一响应重定向方法
响应重定向方法是目前为止将一个网页重定向到另一个网页的最简单的方法的最简单的方法当Web服务器接到一个重定向请求后它会将一个响应头送给客户端这将导致客户端发送一个新的请求到服务器按句话说一个重定向请求实际上是两个请求响应一个是最初的请求响应另一个是新的重定向请求响应
在ASPNET中实现重定向很容易下面的代码演示了如何使用ResponseRedirect方法实现网页重定向
protected void Redirect_Click(object sender
EventArgs e)
{
ResponseRedirect(menuaspx);
}
要注意的是重定向请求只是一个GET请求这就意味着我们不能从源页中通过重定向命令提交数据但是我们可以在重定向中使用查询字符串来传递数据如下面代码所示
protected void Redirect_Click(object sender
EventArgs e)
{
ResponseRedirect(menuaspx?userName= + UserNameText));
}
上面的例子将一个查询字符串作为参数传递给了ResponseRedirect方法的目标URL我们可以通过如下的代码获得源数据
protected void Page_Load(object sender
EventArgs e)
{
string userName = Request[userName];
}
二服务器传输方法
和依赖于客户端向另一个新页发请求不同服务器传输是一种服务器重定向技术这种技术通过简单的改变Web服务器所处理的代码来达到请求一个新页的目的当被请求页和源页面在同一个服务器时服务器传输要比ResponseRedirect方法更有效这是由于这种技术可以避免额外的开销仅仅使用服务器的资源就可以进行重定向要注意的这种技术有一个副作用在页面进行重定向时客户端的URL仍然会保持源页面的URL这可能会使客户认为他们所获得的数据是源页面产生的当然在大多数情况下这不是问题但是这将使调试变得更困难
ServerTransfer方法还可以保存初始页的HttpContext因此目标页可以访问源页面的值我们可以使用FormsCollection属性来从目标页面中获得源页面的值首先要确定我们使用了被重载的方法这个方法有两个参数目标URL和一个Boolean类型的值告诉服务器是否保存用于描述源页面值的Form如下面的代码所示
Server
Transfer(
Menu
aspx
true);
然后我们在目标页面中获得一个叫txtUserName的Textbox控件的值的代码如下
object obj = Request
Form[
txtUserName
];
三ResponseRedirect和ServerTransfer的比较
由于ResponseRedirect方法要进行两次请求响应操作因此我们应该在对性能要求高的网站尽量避免使用这种方法然而只从技术上说使用redirect方式确实可以从一个网页跳到另一个网页相比之下ServerTransfer会更有效率但是跳转的范围仅限于同一个Web服务器的不同网页从本质上说我们可以使用ServerTransfer来消除不必要的请求响应操作如果我们需要重定位到不同服务器的网页就需要使用ResponseRedirect方法
四跨页提交概述
在ASPNET 中我们可以通过实现IbuttonControl接口提交给不同的WebForm来实现跨网页的提交和ResponseRedirect类似跨网页提交是一个基于客户端的传输机制但也有点象ServerTransfer目标网页也可以访问源网页的数据为了使用跨网页提交我们需要在源网页中的PostBackUrl属性中指定目标URL
[] [] []