五實現跨網頁提交
這部分將討論一下如何在ASPNET中實現跨網頁提交為了開始我們的學習假設有兩個Web頁一個是源Web頁另一個是目標Web頁在源網頁中初始化了使用按鈕進行的跨網頁提交操作我們首先必須設置目標網頁按鈕的PostBackUrl屬性順便說一句所有實現了SystemWebUIWebControlsIbuttonControl接口的Web控件都有跨網頁提交的特性下面的代碼將演示這一過程
<asp:Button ID=
btnSubmit
runat=
server
PostBackUrl=
~/target
aspx
text =
Post to a target page
/>
當我們設置PostBackUrl屬性時ASPNET框架將相應的控件綁定到一個新的叫WebForm_DoPostBackWithOptions的JavaScript函數產生的Html代碼如下
<input type=
submit
name=
btnSubmit
value=
Post to target Page
onclick=
javascript:WebForm_DoPostBackWithOptions(
new WebForm_PostBackOptions(
btnSubmit
false
Target
aspx
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)
{
//執行代碼
}
這個PreviousPage屬性在ServerTransfer和跨網頁提交中都可以使用在ASPNET中我們可以在調用ServerTransfer操作後使用PreviousPage屬性在目標頁面中來獲得源頁面的數據代碼如下:
protected void Redirect_Click(object sender EventArgs e)
{
ServerTransfer(menuaspx);
}
在這個接收面中我們現在可以獲得Web頁面的數據代碼如下
protected void Page_Load(object sender
EventArgs e)
{
if (PreviousPage != null)
{
TextBox txtBox = (TextBox)
PreviousPage
FindControl(
txtUserName
);
if (textBox != null)
string userName = textBox
Text;
//其他可執行的代碼
}
}
要注意的是上面的代碼必須將txtUserName控件轉換為TextBox類型以便可以訪問其中的值
[] [] []
From:http://tw.wingwit.com/Article/program/net/201311/15174.html