ASP.NET 中處理頁面“回退”的方法

來源:互聯網
上載者:User

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

  在 Classifieds Site Starter Kit 中,學習到一種不錯的關於回退的處理方法,可以分別在用戶端和伺服器控制項中實現頁面的回退,代碼如下:

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

   //記錄上一個頁面的資訊
  private string UrlReferrer
   ...{
  get
        ...{
            return ViewState["UrlReferrer"] as string;
        }
        set
        ...{
            ViewState["UrlReferrer"] = value;
        }

    }

  //記錄 PostBack 的次數
  public int NumPostBacks
    ...{
        get
        ...{
            if (ViewState["NumPostBacks"] != null)
                return (int)ViewState["NumPostBacks"];
            else
            ...{
                ViewState["NumPostBacks"] = 0;
                return 0;
            }
        }
        set
        ...{
            ViewState["NumPostBacks"] = value;
        }
    }

 

  // 記錄上一頁面的資訊或更新 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);
    }

 

   //在代碼中回退
   protected void ReturnToPreviousPage()
  ...{
        string referrer = UrlReferrer;
        if (referrer != null)
            Response.Redirect(referrer);
        else
            Response.Redirect("~/default.aspx", true);

 

    3)直接在代碼中處理後援動作(如 Back_Click),可以直接調用如下方法 
  2)在 Page_Load 事件記錄上一頁面地址、更新 Postback 次數、設定回退連結的地址



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.