Shael

跳到主文

夏的零度空間
越來越老了...很多東西不記下來...很快就會忘記...
即使更新速度很慢...

部落格全站分類:心情日記

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 4月 03 週五 200920:58
  • ASP.NET 中處理頁面“退回上一頁”的方法

  • 我們在編寫基於 ASP.NET 的應用程式時,如果代碼執行出錯或檢測到異常,一般會提示用戶“返回”或“回退”,或者在多步操作、列表/詳細的查看介面中,也會給用戶提供回退到上一頁面的鏈結,對於這種情況,大家很快就會想到的簡單做法就是利用 Javascript 來實現,即 history.go(-1) ,但是由於 ASP.NET 頁面的 PostBack 機制,所以 history.go(-1) 可能還是當前頁面,而不能真正回退到上一頁面。 在 Classifieds Site Starter Kit 中,學習到一種不錯的關於回退的處理方法,可以分別在用戶端和伺服器控制項中實現頁面的回退,代碼如下:

     

  • 1)首先在頁面中增加兩個屬性

        //記錄上一個頁面的資訊
        private string UrlReferrer
        {    //記錄 PostBack 的次數
            get
            {
                return ViewState["UrlReferrer"] as string;
            }
            set
            {
                ViewState["UrlReferrer"] = value;
            }
     
        }
        public int NumPostBacks
        {
            get
            {
                if (ViewState["NumPostBacks"] != null)
                    return (int)ViewState["NumPostBacks"];
                else
                {
                    ViewState["NumPostBacks"] = 0;
                    return 0;
                }
            }
            set
            {
                ViewState["NumPostBacks"] = value;
            }
        }
     

    2)在 Page_Load 事件記錄上一頁面位址、更新 Postback 次數、設置回退鏈結的位址

        // 記錄上一頁面的資訊或更新 PostBack 的次數
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Request.UrlReferrer != null)
                    this.UrlReferrer = Request.UrlReferrer.ToString();
            }
            else
                NumPostBacks++;
            int goBackSteps = NumPostBacks + 1;
            BackLink.NavigateUrl = String.Format("javascript:history.go(-{0});", goBackSteps);
        }

     

    3)直接在代碼中處理回退操作(如 Back_Click),可以直接調用如下方法

        //在代碼中回退
        protected void ReturnToPreviousPage()
        {
            string referrer = UrlReferrer;
            if (referrer != null)
                Response.Redirect(referrer);
            else
                Response.Redirect("/default.aspx", true);
        }
    Classifieds Site Starter Kit 中,學習到一種不錯的關於回退的處理方法,可以分別在用戶端和伺服器控制項中實現頁面的回退,代碼如下:
    來源http://goodlucky.pixnet.net/blog/post/26885934

    雖說我是寫Basic語言的
    但是基本上C還是可以看的懂得...

    Shael


    文章標籤
    全站熱搜
    創作者介紹
    創作者 shael 的頭像
    shael

    Shael

    shael 發表在 痞客邦 留言(0) 人氣(2,952)

    • 全站分類:
    • 個人分類:.NET&程式筆記
    ▲top

    贊助廣告

    最新文章

      文章分類

      • 自言自語 (6)
      • 不想分類 (12)
      • shael 記事 (42)
      • 馬來西亞 (6)
      • 心情日誌 (12)
      • .NET&程式筆記 (156)
      • 好文分享 (66)
      • 影音推薦 (6)
      • 系統相關 (6)
      • 至理名言 (12)
      • 蜜月英國 (84)
      • 未分類文章 (1)
      PIXNET Logo登入

      熱門文章

      • ()HTML TABLE 細線表格
      • ()VB.NET EXCEL CLOSE 釋放記憶體
      • ()asp Microsoft VBScript 執行階段錯誤 錯誤 '800a000d' 型態不符合
      • ()不可以在 DropDownList 中選取多個項目 ?
      • ()如何判斷Table(資料表)是否存在...(Oracle & Access)
      • ()ASP.NET 中處理頁面“退回上一頁”的方法
      • ()詩號 - 天刀笑劍鈍
      • ().Net Response.Redirect可以加上target屬性嗎?
      • ()GridView 中 DataSource 的資料總筆數
      • ()VB.NET Hash MD5 雜湊密碼

      最新留言

      文章精選

      文章搜尋

      參觀人氣

      • 本日人氣:0
      • 累積人氣:61,799