解讀ASP.NET 2.0跨網頁提交的三種方法(2)_.Net教程
推薦:揭秘設計ASP.NET應用程序的七大妙招隨著微軟.NET的流行,ASP.NET越來越為廣大開發人員所接受。作為ASP.NET的開發人員,我們不僅需要掌握其基本的原理,更要多多實踐,從實踐中獲取真正的開發本領。在我們的實際開發中,往往基本的原理滿足不了開發需求,我們更多的要積累一些開發技巧,本文就
六、從目標頁面中獲得源頁面控件的值
ASP.NET2.0提供了一個叫PreviousPage的新的屬性,這個屬性無論在何時當前頁面進行跨網頁提交操作時都會指向源頁面。要注意的是,當源頁面和目標頁面在不同的應用程序中時,這個屬性包含null(這個null并不是未初始化的意思)。還有要注意的是當目標網頁訪問 PreviousPage屬性時可以獲得源頁面的數據,ASP.NET運行時裝載并執行了源頁面。這將引發ProcessChildRequest事件的發生。而且,它還會引發Page_Init事件、Page_Load和任何其他的源頁面按鈕單擊事件。
因此,我們要避免由于不小心進行誤操作,所以最好通過IsCrossPostBack屬性來確認是否為一個跨網頁提交發生,如果這個屬性值為true,那么目標網頁就是通過一個跨網頁提交動作而調用的。如果是通過另外一種方式調用的(如一般的請求、Response.Redirect或是一個Server.Transfer),這個屬性的值為false。下面的例子演示了如何使用這個屬性。
if ( PreviousPage.IsCrossPagePostBack) { //執行代碼 }
這個PreviousPage屬性在Server.Transfer和跨網頁提交中都可以使用。在ASP.NET2.0中,我們可以在調用Server.Transfer操作后使用PreviousPage屬性在目標頁面中來獲得源頁面的數據,代碼如下:
以下為引用的內容: { Server.Transfer("menu.aspx"); } protected void Redirect_Click(object sender, EventArgs e) |
在這個接收面中我們現在可以獲得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類型,以便可以訪問其中的值。
七、使用PreviousPageType
PreviousPageType屬性提供了在跨網頁操作中訪問源頁面的強類型能力,下面讓我們演示一下如何不通過任何類型轉換來從源頁面中獲得控件值。代碼如下:
以下為引用的內容: < asp:Textbox ID="txtUserName" Runat="server" />< asp:Textbox ID="txtPassword" Runat="server" /> < asp:Button ID="Submit" Runat="server" Text="Login" PostBackUrl="Menu.aspx" /> |
要注意的是單擊按鈕可以重定向到一個叫“Menu.asp”的目標頁。這個目標頁可以使用如下的代碼獲得用戶名和密碼:
八、保存視圖狀態
對于跨網頁提交來說,ASP.NET 2.0 內嵌了一個叫__POSTBACK的隱藏字段,這個字段包含了關于源頁面的視圖信息 -- 也就是由源頁面提供了,包含了一個帶有一個非空PostBackUrl屬性值的服務端控件。目標頁可以使用__POSTBACK中的信息來獲得源頁面的視圖狀態信息。代碼如下:
以下為引用的內容: if(PreviousPage!=null && PreviousPage.IsCrossPagePostBack && PreviousPage.IsValid) { TextBox txtBox = PreviousPage.FindControl("txtUserName"); Response.Write(txtBox.Text); } |
在上面的代碼中核對了用于確保PreviousPage屬性不為null的檢查代碼。順便提一下,如果目標頁和源頁面不在同一個應用程序中,這個 PreviousPage屬性的值為null。只有在進行跨網頁提交操作時,IsCrossPagePostBack屬性才為true。
這個跨網頁提交的特性,是ASP.NET2.0中最強有力的特性之一,這種技術將允許在一個頁面中提交到另外一個頁面,并且可以在目標頁面地無縫地操作源頁面中的數據。
分享:解析Web開發模式的顛覆者:ASP.NET MVC2008年3月微軟針對ASP.NET 3.5發布的MVC框架(Preview 2 版本)是一個真正意義上的ASP.NET MVC框架。至今,短短4個月內此框架已經發展到Preview 4版本。許多國內外業界人士稱該框架為其前基于Web表單開發模式的歷史性顛覆。本文站在對ASP.NET MVC框架與傳統AS
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-解讀ASP.NET 2.0跨網頁提交的三種方法(2)。