文章編號: 913721 - 上次校閱: 2007年11月22日 - 版次: 1.4

如何在 ASP.NET 2.0 中實作智慧巡覽功能

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

簡介

智慧型巡覽 Microsoft ASP.NET 2.0 中已被取代,而且 Microsoft 產品支援服務不再支援。本文將告訴您,如何在 ASP.NET 2.0 中實作智慧巡覽功能。

其他相關資訊

在較早版本的 ASP.NET,您可以啟用智慧型巡覽使用 Page.SmartNavigation 屬性。當您將 Page.SmartNavigation 屬性設定為 true 時,會啟用下列智慧型巡覽功能:
  • 在回傳後維護 Web 網頁的捲動位置。
  • 項目焦點在 Web 網頁上的會維護期間瀏覽。
  • 只有最新的 Web 網頁狀態保留在 Web 瀏覽器歷程記錄資料夾中。
  • 重繪閃動效果期間瀏覽 Web 網頁上可能發生的最小化。
本文將告訴您,如何在 ASP.NET 2.0 中實作智慧巡覽功能,而不使用 Page.SmartNavigation 屬性。

如何維持捲動位置

若要維持捲動位置,在 Web 網頁的回傳後,使用 Page.MaintainScrollPositionOnPostBack 屬性。如需有關 Page.MaintainScrollPositionOnPostBack 屬性的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
http://msdn2.microsoft.com/en-us/library/system.web.ui.page.maintainscrollpositiononpostback.aspx (http://msdn2.microsoft.com/en-us/library/system.web.ui.page.maintainscrollpositiononpostback.aspx)

如何維護項目焦點

若要維護項目焦點放在 Web 網頁在導覽期間,使用 Page.SetFocus 方法。如需有關 Page.SetFocus 方法的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/system.web.ui.page.setfocus.aspx (http://msdn2.microsoft.com/en-us/library/system.web.ui.page.setfocus.aspx)

如何將保留在 Web 瀏覽器歷程記錄資料夾中只最新的網頁狀態

若要防止使用者從回到先前瀏覽的網頁,必須防止新增到 Web 瀏覽器歷程記錄資料夾瀏覽過的網頁。此外,您必須防止加到 Web 瀏覽器歷程記錄資料夾的 ASP.NET 伺服器控制項所產生的回傳。如果只保留最新的 Web 網頁狀態,而且沒有網頁是在 Web 瀏覽器歷程記錄資料夾中 上一步 便無法使用。

由設計,您無法以程式設計方式修改 Web 瀏覽器歷程記錄資料夾。如果要解決這項限制,使用下列方法之一。

方法 1: 停用 Web 瀏覽器快取,並使用工作階段變數

如果您停用 Web 瀏覽器快取,Microsoft Internet Explorer 會保留至瀏覽過的 Web 網頁在 Web 瀏覽器歷程記錄資料夾中的指標。Internet Explorer 不保留的 Web 網頁的實際內容。因此,當使用者按一下 [上一步],網頁瀏覽器必須送出到 Web 伺服器的網頁要求。利用 ASP.NET 工作階段變數,您可以撰寫決定使用者是否應該可以檢視 [要求] 頁面的演算法。如果使用者檢視要求的網頁時,會在 Web 應用程式中發生問題,Web 伺服器可以重新導向網頁瀏覽器到目前的頁面來代替。因此,執行任何動作似乎發生在當使用者按一下 [上一步]

若要停用 Web 瀏覽器快取,使用下列方法之一:
  • 使用 ASP.NET @ OutputCache 指示詞停用 Web 瀏覽器快取。當您設定 位置 屬性為 [] 時,Web 瀏覽器快取會停用。如需有關 @ OutputCache 指示詞的詳細資訊,請造訪下列 MSDN 網站:
    http://msdn2.microsoft.com/en-us/library/hdxfb6cy.aspx (http://msdn2.microsoft.com/en-us/library/hdxfb6cy.aspx)
  • 停用 Web 瀏覽器快取以程式設計方式使用 Response.Cache.SetCacheability 方法。如需有關 Response.Cache.SetCacheability 方法的詳細資訊,請造訪下列 MSDN 網站:
    http://msdn2.microsoft.com/en-us/library/c4yy9w70.aspx (http://msdn2.microsoft.com/en-us/library/c4yy9w70.aspx)
  • 使用 < 中繼 http-equiv > 停用 Web 瀏覽器快取 中 Web 網頁的 HTML 標記。在下列的 HTML 程式碼範例中,示範了如何執行這項操作。
    <html>
    <head>
      <meta http-equiv="Expires" content="0">
      <meta http-equiv="Cache-Control" content="no-cache">
      <meta http-equiv="Pragma" content="no-cache">
    </head>
    

方法 2: 在 Web 網頁中使用隱藏的框架

這個方法類似於由智慧型巡覽內部使用的機制。建立包含可見的框架和隱藏的框架的網頁。在下列的 HTML 程式碼範例中,示範了如何執行這項操作。
<frameset cols="100%,*">
    <frame src="goback.html">
    <frame src="fillerpage.html">
</frameset>
這兩個框架必須參考現有的網頁。否則,Web 瀏覽器視窗會顯示找不到 Web 網頁的錯誤訊息。隱藏的框架頁 (Fillerpage.html) 必須包含沒有任何內容。可見的框架頁 (Goback.html) 必須包含下列的 HTML 程式碼。
<meta http-equiv="refresh" content=".0; url=nobackpage.html">
當使用者造訪該網頁時,會載入這兩個框架。會將 Goback.html 頁面立即可見的框架重新導向新的 Web 網頁 (Nobackpage.html)。如果使用者按一下 [上一步],載入 Goback.html 網頁。會將再,Goback.html 頁面立即使用者重新導向至 Nobackpage.html 頁面一次。

方法 3: 使用 location.replace 方法

建立執行呼叫 location.replace 方法的用戶端指令碼的網頁。在這種情況下 Web 瀏覽器載入使用中視窗內的 URL 的內容。因為內容取代使用中視窗,網頁瀏覽器並不會考慮這個取代是 Web 網頁間瀏覽。因此,沒有項目會加入至 Web 瀏覽器歷程記錄資料夾。下列的 HTML 程式碼範例示範如何使用 location.replace 方法。
<a href="next.aspx" onclick="javascript:location.replace(this.href); event.returnValue=false; event.cancelBubble=true;">
Click here to visit the next page without adding the current page to the history folder.
</a>
下列程式碼範例示範如何在 C# 方法中使用 location.replace 方法。
private void WebForm1_PreRender(object sender, System.EventArgs e)
{
    if (IsPostBack)
    {
        Response.Write("<html><head><script>location.replace('"+Request.Path+"');\n"+"</script></head><body></body></html>\n");
        Response.End();
    }
}
location.replace 方法的相關資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/ms536712.aspx (http://msdn2.microsoft.com/en-us/library/ms536712.aspx)

方法 4: 使用 window.history.forward 方法

建立執行呼叫 window.history.forward 方法的用戶端指令碼的網頁。在這種情況下,Web 瀏覽器會自動往前推進 [Web 瀏覽器歷程記錄] 資料夾中的一頁。因此,稍後回傳會加入至 Web 瀏覽器歷程記錄資料夾。如果使用者按一下 [上一步],使用者是重新導向至目前的 Web 網頁。

您可以使用搭配 location.replace 方法 window.history.forward 方法。當您一起使用這些方法巡覽 Web 網頁和回傳之間會正確地處理。

如需有關 window.history.forward 方法的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/ms536426.aspx (http://msdn2.microsoft.com/en-us/library/ms536426.aspx)

方法 5: 修改 Web 應用程式邏輯

修改 Web 應用程式邏輯,當使用者按一下 [上一步] 時正常運作。當使用者按一下 [上一步,Web 應用程式必須維護所有送出的資料的完整性和使用者狀態的完整性。

如何重繪閃動效果巡覽時可能會發生的最小化

當使用者在使用伺服器控制項的 ASP.NET Web 應用程式中檢視 Web 網頁時,使用者可能會遇到一閃爍效果。當使用者變更控制項的值時,可能就會發生閃爍效果。如果該控制項會產生回傳,網頁瀏覽器送出要求的 Web 伺服器 Web 網頁的新狀態。在當新的 Web 網頁狀態中呈現在網頁瀏覽器閃爍效果可能會發生。

因為 Web 網頁必須重新轉譯,沒有簡單的方法,以消除此重繪閃動] 效果。通常,這種行為是明顯給使用者。

附註當 Web 用戶端和 Web 伺服器之間的連線速度非常快速時閃爍效果可能 unnoticeable。

以最小化重繪閃動效果、 回傳,數目減至最少或消除回傳。要執行此動作請根據您的情況使用下列方法之一。

方法 1: 使用 ASP.NET 2.0 用戶端回呼管理員

使用 ASP.NET 2.0 用戶端回呼管理員來讓網頁送出要求到 Web 伺服器而不使用完整的回傳。因為用戶端回呼不包括回傳資料,用戶端回呼不會強制整個網頁在網頁瀏覽器中更新。這樣可以降低導覽期間可能會發生閃爍效果。

如需有關 ASP.NET 2.0 用戶端回呼管理員的詳細資訊,請造訪下列 MSDN 網站:
http://msdn.microsoft.com/msdnmag/issues/06/00/ASPNET20Overview/default.aspx (http://msdn.microsoft.com/msdnmag/issues/06/00/ASPNET20Overview/default.aspx)
如需有關如何實作不使用回傳的用戶端回呼的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/ms178208.aspx (http://msdn2.microsoft.com/en-us/library/ms178208.aspx)

方法 2: 在 Web 網頁中使用隱藏的框架

建立包含可見的框架和隱藏的框架的網頁。有關如何執行這項操作的詳細資訊,請參閱 < 如何保留在 Web 瀏覽器歷程記錄資料夾中只最新的網頁狀態 > 一節中的 2 方法。

?考

如需有關 ASP.NET 2.0 中已被取代 [Page.SmartNavigation 屬性的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/system.web.ui.page.smartnavigation.aspx (http://msdn2.microsoft.com/en-us/library/system.web.ui.page.smartnavigation.aspx)

這篇文章中的資訊適用於:
  • Microsoft ASP.NET 2.0
關鍵字:?
kbmt kbhowto kbinfo KB913721 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:913721? (http://support.microsoft.com/kb/913721/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。