重點總結
在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則不需要顯示的類型轉換
From:http://tw.wingwit.com/Article/program/net/201311/12599.html