在ASP.NET网页上的跨页发送PreviousPage

上传人:m**** 文档编号:51677179 上传时间:2018-08-15 格式:DOCX 页数:4 大小:24.06KB
返回 下载 相关 举报
在ASP.NET网页上的跨页发送PreviousPage_第1页
第1页 / 共4页
在ASP.NET网页上的跨页发送PreviousPage_第2页
第2页 / 共4页
在ASP.NET网页上的跨页发送PreviousPage_第3页
第3页 / 共4页
在ASP.NET网页上的跨页发送PreviousPage_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《在ASP.NET网页上的跨页发送PreviousPage》由会员分享,可在线阅读,更多相关《在ASP.NET网页上的跨页发送PreviousPage(4页珍藏版)》请在金锄头文库上搜索。

1、在在 ASP.NETASP.NET 网页上的跨页发送网页上的跨页发送 PreviousPagePreviousPage默认情况下,在 ASP.NET 网页中引起回发的按钮和其他控件将页提交回该页本身。这是 ASP.NET 网页在其正常的处理过程中所要经历的往返周期的一部分。在某些情况下,可能需要将一个页发送到其他页。例如,您可能正在创建一个收集每个页上不同信息的多页窗体。在此情况下,可以将页中的某些控件(实现 IButtonControl 接口的控件,如 Button 控件)配置为发送至不同的目标页。这被称为跨页发送。跨页发送与使用 Transfer 方法重定向到其他页相比,具有一些优点。从源

2、页获取信息从源页获取信息为跨页发送配置页时,您通常需要从源页中获取信息。这可能包括来自页上控件的信息(即由浏览器发送的信息),以及源页的公共属性。获取控件值获取控件值Page 类公开一个名为 PreviousPage 的属性。如果源页和目标页位于同一 ASP.NET 应用程序中,则目标页中的 PreviousPage 属性包含对源页的引用。(如果该页不是跨页发送的目标或者这些页位于不同的应用程序中,则不会初始化 PreviousPage 属性。) 默认情况下,PreviousPage 属性类型化为 Page。? 1如果源页和目标页位于不同的应用程序中,则无法直接获取页上控件的值,但可以从 Fo

3、rm 字典中读取发送的数据。因为源页经过散列处理,所以不能从源页中读取视图状态。 如果要在源页中存储值并使这些值可供其他应用程序中的目标页使用,则可以将这些值 作为字符串存储在源页的隐藏字段中,并在目标页中通过 Request.Form 来访问它们。在 PreviousPage 属性中使用引用,便可以搜索源页上的控件并提取这些控件的值。通常使用 FindControl 方法来执行此操作。移动电玩城 http:/? 1 2 3 4 5 6 7 8if (Page.PreviousPage != null) TextBox SourceTextBox = (TextBox)Page.Previou

4、sPage.FindControl(“TextBox1“);if (SourceTextBox != null)Label1.Text = SourceTextBox.Text;9FindControl 方法在当前的命名容器中查找控件。如果要查找的控件位于另一控件内(通常位于模板内),则必须先获取对该容器的引用,然后才能在该容器中查找要获取的控件。在下面的代码示例中,源页包含一个 Login 控件,并具有一个 LayoutTemplate 容器,而该容器又包含一个名为 UserName 的 TextBox 控件。该代码获取 UserName 控件的值。? 1 2 3 4 5 6 7 8 9 1

5、0 11 12 13Login LoginControl = (Login)PreviousPage.FindControl(“Login1“); if (LoginControl != null) TextBox UserName = (TextBox)LoginControl.FindControl(“UserName“);if (UserName != null)Label1.Text = UserName.Text; else Label1.Text = “Cannot find user name in Login control.“; 从源页获取公共属性值从源页获取公共属性值在跨页

6、发送的目标页中,也可以获取源页的公共成员的值。最常见的方案是源页定义公共属性,并且您要在目标页上获取这些属性的值。建议您只将需要的信息作为公共属性公开,以减少可能被潜在的恶意用户使用的信息量。若要获取源页的公共成员,必须先获取对源页的强类型引用。可以通过多种方法来执行此操作。第一种方法是在目标页中包含一个 PreviousPageType 指令,该指令允许您指定源页,如此示例中所示:? 1包含此指令时,PreviousPage 属性被强类型化为被引用的源页的类。因此,可以直接引用源页的公共成员。可以使用 type 属性直接指定源页的类型,也可以通过在VirtualPath 属性中显式引用源页来

7、间接指定源页的类型,如该示例中所示下面的代码示例演示源页的一部分,其中包含一个名为 CurrentCity 的公共属性,该属性用于公开名为 textCity 的 TextBox 控件的值。? 1 2 3 4 5 6 7public String CurrentCity getreturn textCity.Text; 在源页上创建的、主要用于为跨页发送公开值的属性通常是只读属性。尽管源页可以包含公共读/写属性,但是通过目标页属性设置源页属性一般没有任何效果,因为不会保留此值。如果目标页中包含指向源页的 PreviousPageType 指令,则可以使用下面的代码访问源页的 CurrentCit

8、y 属性。? 1Label1.Text = PreviousPage.CurrentCity;获取对源页的强类型引用的另一种方法是在引用源页的目标页中包含一个 Reference指令,正如引用要在页中使用的任何类型一样。在此情况下,您可以在目标页中获取目标页的 PreviousPage 属性并将其强制转换为源页类型,如下面的代码示例所示。? 1 2 3SourcePage_aspx sourcePage; sourcePage = (SourcePage_aspx) PreviousPage; Label1.Text = sourcePage.CurrentCity;检查目标页中的回发检查目标

9、页中的回发在跨页回发过程中,源页控件的内容被发送至目标页,并且浏览器执行 HTTP POST 操作(不是 GET 操作)。但在目标页中,在跨页发送之后,IsPostBack 属性便立即成为false。尽管该行为是 POST 的行为,但跨页发送并不是到目标页的回发。因此,IsPostBack 设置为 false,并且目标页可以通过它的第一次代码。如果这在您的应用程序中有用,则可以确定目标页是否由于跨页发送而正在运行。为此,您可以对目标页的 PreviousPage 属性返回的页引用的 IsCrossPagePostBack 属性进行测试,如下面的代码示例所示。? 1 2 3 4 5if(Prev

10、iousPage != null) if(PreviousPage.IsCrossPagePostBack = true)Label1.Text = “Cross-page post.“;6 7 8 9 10 11 else Label1.Text = “Not a cross-page post.“; 请注意,如果当前页不是跨页发送的目标,则 PreviousPage 属性返回 null(在 Visual Basic 中为 Nothing)。跨页发送与跨页发送与 Server.TransferServer.TransferPreviousPage 属性和 PreviousPageType 指令在调用目标页的两种情况下都很有用:在跨页回发中(这是一种基于客户端的传输)和使用 Transfer 方法时(这是基于服务器的操作)。在以上两种操作中,目标页中的代码都可以使用 PreviousPage 属性获取对源页的引用。棋牌评测网 http:/在目标页中,确定页是通过跨页发送还是 Server.Transfer 操作调用可能很重要。为了帮助您执行此操作,Page 类公开了一个名为 IsCrossPagePostBack 的属性

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > .NET

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号