程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 關於頁面跳轉最後返回讓原頁面保持最初結果的處理辦法

關於頁面跳轉最後返回讓原頁面保持最初結果的處理辦法

編輯:關於ASP.NET

2月到新的公司上班,開始的任務是熟悉公司一直在做的項目。並且修改原項目中存在的一些不方便的操作,就是改善用戶體驗。

其中有個任務就是解決頁面返回的問題,開始他們使用的全是goback();的方法。按照項目的設計,每一個功能都是跳轉到一個新的頁面(不是在新窗口中打開)。

這樣最後使用起來就會有一個很不好的體驗。比如,我進入到一個頁面,選擇了N多查詢條件以後,會有個結果列表,點具體信息的時候,會跳轉到一個詳細信息頁面(非新窗口),我在這個詳細頁面進行信息修改。這個時候操作完畢。需要返回到結果列表頁面。就需要點2次按鈕。這樣操作者就會覺得很麻煩。所以我建議不使用我們項目現在用的這個方法,任何新功能都跳轉到一個新的頁面。

推薦幾種方法

1:在同一個頁面,工具功能,顯示和隱藏不同的PANL。不涉及到頁面之間傳值

2:在新窗口中打開

3:使用彈出層

4:視圖狀態

5:post數據到詳細頁面,然後在詳細頁點返回的時候再post回來,不過這樣就不太符合asp.net了

但是我的項目不可能大改,只能在原來的基礎上改了。改的辦法有很多種

1:SESSION,不推薦,會影響程序性能

2:URL參數:不安全,因為參數會暴露在外面

3:通過HttpContext.Current.Handler來獲取

附上一小段代碼,讓大家理解

public partial class Serach : System.Web.UI.Page
{
    protected void Page_Load( object sender, EventArgs e )
    {
        if ( !IsPostBack )
        {
            Result result;
            if ( HttpContext.Current.Handler is Result )
            {
                result = HttpContext.Current.Handler as Result;
                Response.Write( result.text );
            }
        }
    }

    public string datatime
    {
        get { return this.TextBox1.Text; }
        set { this.TextBox1.Text = value; }
    }

    protected void Button1_Click( object sender, EventArgs e )
    {
        Server.Transfer( "Result.aspx" );
    }
}
//查詢頁面

public partial class Result : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        if ( !IsPostBack )
        {
            Serach serach;
            if ( HttpContext.Current.Handler is Serach )
            {
                serach = HttpContext.Current.Handler as Serach;
                this.HiddenField1.Value=serach.datatime ;
            }
        }
    }

    public string text
    {
        get { return this.HiddenField1.Value; }
        set { this.HiddenField1.Value = value; }
    }
    protected void btnText_Click( object sender, EventArgs e )
    {
        Server.Transfer( "Serach.aspx" );
    }
}

//結果頁面

這樣你可以保存你最初的查詢SQL語句,返回的時候再重新加載SQL語句

4:Server.transfer配合previouspage屬性

page類有個previouspage屬性,這樣你可以獲取上個頁面的信息了

if ( Page.PreviousPage != null )
  {
      ContentPlaceHolder content = ( ContentPlaceHolder ) Page.PreviousPage.Master.FindControl( "UIContentAreaPlaceHolder" );
            //Response.Write( hf.Value );
    if ( content != null )
      {
        HiddenField hf = ( HiddenField ) content.FindControl( "hfsql" );
          if ( hf != null )
            {
              this.hfSql.Value = hf.Value;
              //本人加載SQL語句的方法
              LoadDataIntoGridView();
            }
       }
  }

可以將你要保存的信息放在一個HiddenField中來保存。然後使用Server.transfer跳轉到另外的頁面時候可以通過previouspage屬性找到上個頁面保存信息的控件來獲取

我這次使用的就是這個辦法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved