你可以把整个PreviousPage对象转换成触发跨页投递的页面类型。这个方法允许你访问页面的全局属性(public properties)和方法。下面代码是添加了两个属性的第一个清单,这两个属性用于访问域值。
| 以下是引用片段: <%@ Page language="vb" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html><head> <title>Cross Postback Example</title> <script language="vb" runat="server"> Public ReadOnly Property Name Get Return Me.txtName.Text End Get End Property Public ReadOnly Property E-mailAddress Get Return Me.txtE-mailAddress.Text End Get End Property </script></head><body> <form id="frmCrossPostback1" method="post" runat="server"> <asp:Label ID="lblName" runat="server" Text="Name:"></asp:Label> <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br /> <asp:Label ID="lblE-mailAddress" runat="server" Text="E-mail:"></asp:Label> <asp:TextBox ID="txtE-mailAddress" runat="server"></asp:TextBox><br /> <asp:Button ID="btnSubmit" runat="server" Text="Submit" PostBackUrl="CrossPostback2.aspx" /> </form> </body> </html> |
既然现在属性已经建好,那你就能很容易访问它们。要警惕的是,Page类的PreviousPage对象必须转换成正确的类型,这样才能正确访问它的属性。这可以通过把它转换成合适的page类别的对象加以实现。
| 以下是引用片段: <%@ Page language="vb"%> <%@ Reference Page="~/CrossPostback1.aspx" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html> <head> <title>Cross Postback Example 3</title> </head><body> <script language="vb" runat="server"> Sub Page_Load() Dim cppPage As CrossPostback1_aspx If Not (Page.PreviousPage Is Nothing) Then If Not (Page.IsCrossPagePostBack) Then If (Page.PreviousPage.IsValid) ThencppPage = CType(PreviousPage, CrossPostBack1_aspx)Response.Write("Name:" + cppPage.Name + "<br>")Response.Write("E-mail:" + cppPage.E-mailAddress) End If End If End If End Sub </script> </body> </html> |
说明了这一点,它在页面头部定义了调用页的一项引用,那样这个引用类型就能在代码中使用。通过这项引用,实际的VB.NET代码使用CType函数把PreviousPage对象转换成了适当的类型。这之后,那些属性就可以像代码示范的那样使用了。
关于上述清单中PreviousPage对象IsValid方法的使用在此提醒一下:前页的IsValid属性保证你对它操作之前,它已通过所有合法验证测试。
总结
在网页间传递数据参数有很多项应用,包括保持个人用户信息。祖传的网页解决方案,像使用querystring和cookies,允许你很容易当提交发生时从一个页面指向另一个页面。
ASP.NET 1.1除了提供额外方法外,对这些方法也能很好地支持,可是,ASP.NET 2.0依靠跨页投递,使这方面又有了长足发展。它让一个网页处理来自另一网页的数据变得简单。在你开发你的下一个ASP.NET 2.0程序的时候,可要好好利用这个新概念的优势啊。