asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET 2.0 中跨网页提交的三种方法(2)


发布日期:2023年12月15日
 
ASP.NET 2.0 中跨网页提交的三种方法

ServerTransfer(Menuaspxtrue);

然后我们在目标页面中获得一个叫txtUserName的Textbox控件的值的代码如下

object obj = RequestForm[txtUserName];

ResponseRedirect和ServerTransfer的比较

由于ResponseRedirect方法要进行两次请求响应操作因此我们应该在对性能要求高的网站尽量避免使用这种方法然而只从技术上说使用redirect方式确实可以从一个网页跳到另一个网页相比之下ServerTransfer会更有效率但是跳转的范围仅限于同一个Web服务器的不同网页从本质上说我们可以使用ServerTransfer来消除不必要的请求响应操作如果我们需要重定位到不同服务器的网页就需要使用ResponseRedirect方法

跨页提交概述

在ASPNET 我们可以通过实现IbuttonControl接口提交给不同的WebForm来实现跨网页的提交和ResponseRedirect类似跨网页提交是一个基于客户端的传输机制但也有点象ServerTransfer目标网页也可以访问源网页的数据为了使用跨网页提交我们需要在源网页中的PostBackUrl属性中指定目标URL

实现跨网页提交

这部分将讨论一下如何在ASPNET中实现跨网页提交为了开始我们的学习假设有两个Web页一个是源Web页另一个是目标Web页在源网页中初始化了使用按钮进行的跨网页提交操作我们首先必须设置目标网页按钮的PostBackUrl属性顺便说一句所有实现了SystemWebUIWebControlsIbuttonControl接口的Web控件都有跨网页提交的特性下面的代码将演示这一过程

PostBackUrl=~/targetaspx text = Post to a target page/>

当我们设置PostBackUrl属性时ASPNET框架将相应的控件绑定到一个新的叫WebForm_DoPostBackWithOptions的JavaScript函数产生的Html代码如下

onclick=javascript:WebForm_DoPostBackWithOptions(

new WebForm_PostBackOptions(btnSubmit false

Targetaspx false false)) id=btnSubmit />

对于上面的html代码来说当用户单击按钮时浏览器将提交目标URL(Targetaspx)而不是源URL

从目标页面中获得源页面控件的值

ASPNET提供了一个叫PreviousPage的新的属性这个属性无论在何时当前页面进行跨网页提交操作时都会指向源页面要注意的是当源页面和目标页面在不同的应用程序中时这个属性包含null(这个null并不是未初始化的意思)还有要注意的是当目标网页访问PreviousPage属性时可以获得源页面的数据ASPNET运行时装载并执行了源页面这将引发ProcessChildRequest事件的发生而且它还会引发Page_Init事件Page_Load和任何其他的源页面按钮单击事件

因此我们要避免由于不小心进行误操作所以最好通过IsCrossPostBack属性来确认是否为一个跨网页提交发生如果这个属性值为true那么目标网页就是通过一个跨网页提交动作而调用的如果是通过另外一种方式调用的(如一般的请求ResponseRedirect或是一个ServerTransfer)这个属性的值为false下面的例子演示了如何使用这个属性

if ( PreviousPageIsCrossPagePostBack)

{

//执行代码

}

上一篇:asp.net中显示DataGrid控件列序号的几种方法

下一篇:ASP.NET调用.sql文件