• 我們在編寫基於 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


    arrow
    arrow
      全站熱搜

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


      留言列表 留言列表

      發表留言