程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET 2.0的跨頁回調

ASP.NET 2.0的跨頁回調

編輯:關於ASP.NET

在ASP.NET2.0中,跨頁提交允許把一個頁面的回調回調提交到一個不同的網 頁中。本文中我們將探索一些不同的跨頁提交的方法。另,翻譯的特別困難,請 各位朋友批評指正。

ASP.NET1.1只提供了提交到本頁的方式。在很多情況下,我們的解決方案中 會有跨頁的提交的需求,傳統的方法都是通過Response,Redirect或者 Server.Transfer的方式轉移到另外的一頁然後模擬出一個跨頁回調的效果。

ASP.NET2.0提供了這種能實現從一個表單頁提交到另一個表單頁的跨頁提交 的功能。

如何實現跨頁提交

要實現跨頁提交,在源表單頁裡,需要設置控件的PostBackURL這個屬性來實 現IButtonControl(比如Button,ImageButton,LinkButton)接口來定位到目標 表單頁。當用戶單擊這個button控件的時候,表單頁就會跨頁提交到目標表單頁 。不需要在源表單頁中進行任何設置或編寫任何的代碼。

通過FindControl方法在目標頁中檢索源表單頁中的信息

目標表單頁獲得“跨”過來的那一頁請求的信息是通過一個不為空的 PreviousPage方法。這個屬性代表著源表單頁並且為源表單頁和其控件建立引用 。

源表單頁上的控件在目標頁上可以通過PreviousPage的FindControl方法來獲 得。

protected void Page_Load(object sender, EventArgs e)
   {
   ...
   TextBox txtStartDate = (TextBox) PreviousPage.FindControl ("txtStartDate ");
   ...
   }

這時目標表單頁是不知道源表單頁的任何信息的。PreviousPage這個屬性的 類型是Page,所以檢索控件就可以使用FindControl的方法,但開發人員需要對 源表單頁的結構有一個大體的了解。而使用FindControl方法必然會有一些限制 ,比如FindControl方法只能依靠開發人員提供的控件的id屬性來定位到一個控 件。如果源表單頁的控件id變了的話那麼這個方法就有可能失效。FindControl 方法只能處理那些在當前容器裡的控件,如果開發人員需要檢索在其它控件中( 容器)的控件的話,那麼首先需要獲得其父控件的一個引用。

通過@PreviousPageType指令在目標頁中檢索源表單頁的信息

另外一個方法就是在源表單頁已經確定的情況下,使用@PreviousPageType指 令。這個指令可以在目標表單頁中以強類型的方式訪問源表單頁。這個指令指定 源表單頁使用VirtualPath屬性還是TypeName屬性。PreviousPage屬性返回一個 強類型的結果來對源表單頁進行引用。其允許訪問源目標頁的公共屬性。

SourcePage.aspx:

<form runat="server" >
...
<asp:textbox runat="server" id="txtFirstName"/>
<asp:textbox runat="server" id="txtLastName"/>
<asp:button runat="server" id="btnViewReport" Text="View Report" PostbackURL="~/targetpage.aspx" />
...
public string FirstName
{
   get { return txtFirstName.Text; }
}
...
TargetPage.aspx
<%@ PreviousPageType VirtualPath="sourcepage.aspx" %>
string strFirstName;
strFirstName = PreviousPage.FirstName //Strongly Typed PreviousPage allows direct access to the public properties of the source page.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved