2009-07-30 41 views
2

我有一個包含幾個可擴展列表的頁面。在一個完美的世界中,我想顯示鏈接到每個這些列表,當點擊它時,它將重新加載顯示該特定列表的頁面。我讀過ViewState可以消除對隱藏輸入字段,查詢字符串等的需求,但我對這個概念並不熟悉。我可以利用ViewState消除傳遞查詢字符串的需求嗎?

基本上我需要完成兩兩件事:

  1. 加入列表的ID來ViewState的OBJ鏈接被點擊
  2. 讀取ID時,從ViewState的OBJ加載頁面時,顯示該列表

任何人都可以提供一些資源和/或有關此主題的幫助嗎?謝謝!

+0

是否所有這些鏈接,並列出在一個頁面上,或者是從列表中一個單獨的頁面上的鏈接? – Greg 2009-07-30 13:34:55

+1

列表是我正在使用的CMS的一部分。我有一個控件一次顯示任意數量的列表,我想要一個「啓動頁面」鏈接到每個列表,然後點擊鏈接時,視圖狀態用被點擊的列表的ID更新 – Anders 2009-07-30 13:38:20

回答

2

ViewState本質上是一個長編碼的隱藏字段,存儲在頁面的頂部。與常規隱藏字段之間的主要區別是,ASP .NET將對其進行解碼並在回發時自動解析它。

有更好的方法來實現你想要做的事情。

  • 您可以使用查詢字符串。你傳遞的是一個列表ID。將列表ID添加到鏈接的末尾,並在Page_Load上查找它。如果找到它,請加載適當的列表。您需要處理列表ID未被傳遞的情況。 查詢字符串不是邪惡的。它可以顯着幫助減少頁面重量。當與一個像樣的URL重寫器一起使用時,您對通過的內容(以及關鍵的是什麼都不會)有很大的控制權
  • 如果您使用ASP .NET控件(例如Button或LinkBut​​ton)來觸發顯示一個列表,你可以設置CommandArgument屬性並在事件代碼中選擇它。然後,您可以將其作爲參數傳遞給任何方法,或者控件處理列表呈現。
+0

感謝您的意見:) – Anders 2009-07-30 13:36:55

1

ViewState用於存儲後貼片之間的單個頁面上的信息,而不是在頁面之間傳遞參數。

可以使用頁面之間傳遞參數:

  1. 會議
  2. 查詢字符串
  3. 餅乾
  4. 自定義數據庫
  5. 跨頁回發

的這些方法都沒有會自動將數據添加到th的ViewState e頁面被請求。其中,我相信只有#2可以使用直接的HTML鏈接(GET),其餘的通常包含回發(POST)。

你總是需要某種ViewState設置器(ViewState [「Id」] = source.Id)。

How to: Pass Values Between ASP.NET Web Pages

相關問題