重点总结 在ASPNET中要想从目标页获取源页的数据信息可以使用两种方法 一是通过获取源页的控件进而获取控件的属性值 二是直接通过获取源页公开的公共属性来获取源页数据 本示例代码则演示如何通过获取源页的公共属性达到获取源页数据的目的 为了达到这样的目的必须要将PagePreviousPage属性引用的源页进行强类型的转换 这可以通过为目标页添加@PreviousPageType指令或者@Reference指令 一@PreviousPageType 示例代码 本示例代码中源页中包含一个文本框控件以便用户可以输入自己的姓名并且源页也包含一个名为UserName的公共属性此属性返回的就是用户在文本框控件中输入的用户名 源页的代码如下 <%@ Page Language=C# AutoEventWireup=true CodeFile=SourcePageaspxcs Inherits=SourcePage %>
<!DOCTYPE html PUBLIC //WC//DTD XHTML Transitional//EN transitionaldtd> <html xmlns=> <head runat=server> </head> <body> <form id=form runat=server> <div> <asp:TextBox ID=UserNameTextBox runat=server></asp:TextBox> <br /> <asp:Button ID=SubmitButton runat=server Text=提交到目标页 PostBackUrl=~/DestinationPageaspx /> </div> </form> </body> </html> 源页中的UserName公共属性的定义如下 /// <summary> /// 用来获取用户在页面文本框中输入的用户名 /// </summary> public string UserName { get { return thisUserNameTextBoxText; } } 接着应该在目标页中添加@PreviousPageType指令 <%@ PreviousPageType VirtualPath=~/SourcePageaspx %> 此指令有两个属性除了VirtualPath以外还有一个名叫TypeName这两个属性只要设置其中一个就可以了 经过上面这些定义之后就在目标页上通过类似下面的代码来访问源页的UserName公共属性了 if (thisPreviousPage != null) { thisResponseWrite(thisPreviousPageUserName); } 是不是相当的简单呢?这是@PreviousPageType指令相对于@Reference的一个优势它自动就对PagePreviousPage进行了强类型的转换 二@Reference 除了@PreviousPageType指令以外另外一个可用的指令就是@Reference 此指令同样是添加在目标页中而不是源页中可不要搞错了 示例代码以@PreviousPageType的那个代码为基础进行修改 首先删除目标页上的@PreviousPageType指令然后添加@Reference指令 <%@ Reference VirtualPath=~/SourcePageaspx %> 只要做这些修改就可以了最后就可以使用类似下面的代码在目标页中访问源页的公共属性了 if (thisPreviousPage != null) { SourcePage PreviousPage = (SourcePage)thisPreviousPage; thisResponseWrite(PreviousPageUserName); } 注意和@PreviousPageType指令做比较这里对PagePreviousPage进行了显示的类型转换如果不这样做的话将无法访问源页中的公共属性而@PreviousPageType则不需要显示的类型转换 |