2012-01-07 53 views
2

儘管我一般用來傳遞值作爲查詢字符串,但是由於知道查詢字符串並不是一個好方法,因爲有許多安全問題,而且它的最大大小爲256字節或長度爲2048個字符。因此,它是一個很好的方法,通過設置前一頁即"<%@ PreviousPageType VirtualPath="" %>"和訪問前一頁項目Asp.Net,從前一頁訪問變量是一個好方法?

訪問變量請讓我知道,是否有流過比Sessions其他變量的任何其它方式使用前一頁概念的好方法?

回答

0

下面是從MSDN的How to: Pass Values Between ASP.NET Web Pages

您可以通過各種方式的頁面,其中一些 取決於重定向發生之間的信息。下列選項 可即使源頁是從目標頁面不同的ASP.NET Web應用程序 ,或者如果源頁是不是 ASP.NET Web頁:

  • 使用查詢串。
  • 從源頁面獲取HTTP POST信息。

以下選項僅在源頁面和目標頁面位於同一ASP.NET Web應用程序中時纔可用。

  • 使用會話狀態。
  • 在源頁面中創建公共屬性並訪問目標頁面中的屬性值。
  • 從源頁面中的控件獲取目標頁面中的控制信息。

因此,假設您具有相同的ASP.NET應用程序PreviousPage屬性是爲您的情況準確設計的。

-1

您可以使用另一種方法,你應該讓你在context.items

數據這種做法是非常有用的數據在兩個或多個連續的頁面之間保存。它是一種簡單的方法使用的相同:

Context.Items.Add("SOMETHING","somevalue"); 

*您需要使用** Server.Transfer的

代替的Response.Redirect。因爲如果你使用Response.Redirect方法,你的上下文將被清除,你不能得到任何值。

希望這會幫助你。

+0

Server.Transfer是一個嚴重的限制。即使這樣做,爲什麼你需要使用非類型集合而不是類型化的PreviousPage屬性? – Restuta 2012-01-07 05:41:31

+0

是的,但它的加權方法也是Response.Redirect。因爲他正在尋求一種在兩頁之間傳遞數據的好方法......我想這是適當的。 – 2012-01-07 05:46:25

+0

什麼是輕量級?在可維護性方面它很重。這很重要。 – Restuta 2012-01-07 05:47:55

0

PreviousPage適用於跨頁面回發。如果這就是你正在做的事情,那麼它沒有任何問題。

如果沒有回傳,則前一個頁面類的實例的引用不會(不應該)包含任何狀態信息。

如果您只是使用從一個頁面到另一個頁面的鏈接,最好使用會話狀態,Cookie或數據庫之類的內容。如果您正在進行重定向,還有幾個選項(包括使用Server.Transfer()而不是實際重定向)。