ページ間の問題をジャンプ

Webアプリケーションでは、我々は別のページにジャンプする必要があり、多くの時間は、ページがこのアプリケーションに回すことができ、アプリケーションがこのシステムの外かもしれません。この目的のために、我々は直接ジャンプのいずれか、または.NET 4つの方法の合計でこの機能を達成するためには、ジャンプの後にサーバーに送信:ハイパーリンク、サーバ転送、およびクロスブラウザリダイレクトページの送信を。ここでは、4つの方法がある紹介する必要があります:

一つは、ハイパーリンク

    私たちは、サーバーが返すを必要とせずに、バックと呼ばページへジャンプすることをクリックして、それNavigateUrlプロパティを設定した後、確かに我々は、HyperLinkコントロールを使用しています。

第二に、サーバ送信

    これは、Server.Transferメソッドを指します。

    転送方式HttpServerUtilityクラスは、.htmまたは.aspxのページ(注:の.aspページにはできません)するURLのを文字列パラメータとして、バックサーバーにして、私たちの要求の開始ページに現在のページの操作を終了するためにアクセスすることを目指しています。

    これは、現在のページの方法は、常にこの例外Thre​​adAbortExceptionのにつながるため、ときHttpResponse.End Server.Transferメソッドを使用するときには呼ばれていることは注目に値します。通常、この例外は問題ではありませんが、()文の時代にブロックで... .Catchベースのデータベース・トランザクション操作を試してみて、トランザクションをコミットすることができない原因になります。明示的にこの例外Thre​​adAbortExceptionのキャッチがない限り、我々は次の例を見て:  

 

    試し
    {
       Transaction.commit();    
// トランザクションを実行        Server.Transferを( "Test.aspxというID = +  ID);  // 成功した場合には、適切なページライントランザクションに行く    }     キャッチ(ThreadAbortExceptionのEX)    { // キャプチャ異常    }     キャッチ(例外EX)    {        Transaction.rollback();                 // ロールバックトランザクション    }     最後    {        Connection.Close();               // 接続を閉じます    }




       









 

    加えて、Server.Transferメソッドとターゲット・ページを使用して、ソース・ページは、同じアプリケーション内になければなりません。そして、この方法は、現在のユーザーがターゲット・ページを表示する権限を持っていることを確認するために時間を使用していません。この点は、アプリケーションのために非常に重要である場合(例えば、その後、システムに関わる著作権管理など)場合は、このメソッドを使用していない、です。

    新しいページにリダイレクトするとき、あなたは言葉を慎重にブラウザのアドレスバーまたは元のページアドレスの代わりに、現在のページのURLことがわかります。ブラウザの履歴には、ジャンプを示したので、元のページに落ちることはありません、一般的には、ブラウザの「戻る」ボタンをクリックしないであろう。

    パラメータがtrueに設定されている場合、過負荷Server.Transferメソッドでは、それは元のページのQueryStringとフォームのコレクションを保持する、ブールパラメータに設けられた別のページへの制御の転送を完了するのに必要な時間のために、このオーバーロードされたメソッドは、非常に有用であろう。デフォルトはfalseです。

    注意:もちろん、別のページに1ページずつ(隠されたビューステートフォームフィールドに保存されている場合でも、データは保存されません)。ときに、ページレベルのビュー状態なので、Server.Transferメソッドを別のページにジャンプし、ビューステートが失敗するからです。


第三に、ブラウザリダイレクト

    これは、Response.Redirectメソッドを指し、

    リダイレクト方法のHttpResponseクラスは、プログラム可能なハイパーリンクに対応します。このメソッドは、.htmまたは.aspxのページ(注:の.aspページにはできません)文字列パラメータとしてURLアドレスは、サーバの復帰を経由せずに、クライアントが直接リダイレクトを行います。コントラストServer.Transferメソッドに対応する速度よりも速くこうして。それは完全に新しいサーバー要求であるので、認証と承認を完了することを余儀なくされます。

    一つのアプリケーションでない限り、またはそれは、データのターゲットページにソースページから転送することはできません。この場合、データ転送は、セッション状態またはアプリケーションの状態を使用して実施することができます。

    実行このページを終了する必要があると述べた場合とServer.Transferメソッドはオーバーロードされたメソッドは、Booleanパラメータを持っているのResponse.Redirectのように、パラメータが真です。

第四に、クロス・ページの送信

    ページがサーバーに送信され、その後、別のページに直接送信することができます。私たちは、PostBackUrlプロパティ特定の制御により、この機能を実現することができます。この方法はのみ.htmまたはの.aspページの代わりに別の.aspxページに送信することができた場合、現在のページのアクセスを制御しますがPage.PreviousPageプロパティによって達成することができます。

    ソースページと同じアプリケーション内のターゲットページの場合は、セッション状態とアプリケーションの状態だけでなく、ソースページのパブリックメンバを共有することができます。ページは、アプリケーションの外部に広がっ別のページに送ることができますが、ターゲット・ページ・データ・ソース・ページを使用することはできません。

    あなたがターゲットにPreviousPageプロパティにアクセスすることができた場合は、元のページには、再びインスタンス化されますが、また、ソースページからビューステートを復元します。したがって、PreviousPageプロパティの実行性能を直接ソース・ページのビュー状態の影響を受けている使用してデータサイズが格納されます。

    してくださいエッセイの場所の批判の多くは、より多くの取引所で間違っては何もありません!

    私たちは効果を見ることができ、次を達成するためにデモ、後者の3つの方法を作った(クリックし ダウンロードします

ます。https://www.cnblogs.com/shimeng3344518/archive/2007/04/18/718551.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33896069/article/details/94682761