どっとねっとふぁん

C# Tips And Samples
in 検索

16.ページを遷移させる

最新の投稿は、投稿日時: 06-23-2005, 4:52 午後 投稿者: ono です。スレッドには 0 件の返答があります。
投稿のソート: 前へ 次へ
  •  06-23-2005, 4:52 午後 62

    16.ページを遷移させる

    サーバ側でページを遷移させる方法にはResponse.RedirectとServer.Transferがあります。
    Response.Redirectを利用する方法は、例えば次のようになります。

    Page1.aspx
    -------------------------------------------------------
    <%@ Page Language="C#" %>
    <html>
    <head>
    <script runat="server">
    void button_Click(Object sender, EventArgs e) 
    {
        Response.Redirect("page2.aspx");
    }
    </script>
    </head>
    <body>
    <form id="myForm" runat="server">
    このページはPage1です<br />
    <asp:button Text="Page2へ" OnClick="button_Click" runat="server" />
    </form>
    </body>
    </html>
    
    -------------------------------------------------------
    Page2.aspx
    -------------------------------------------------------
    <%@ Page Language="C#" %>
    <html>
    <body>
    このページはPage2です
    </body>
    </html>
    
    -------------------------------------------------------
    Page1でボタンをクリックするとPage2が表示されます。

    Server.Transferを利用する場合は、Page1を次のように変更してください。
    -------------------------------------------------------
    <%@ Page Language="C#" %>
    <html>
    <head>
    <script runat="server">
    void button_Click(Object sender, EventArgs e) 
    {
        Server.Transfer("page2.aspx");
    }
    </script>
    </head>
    <body>
    <form id="myForm" runat="server">
    このページはPage1です<br />
    <asp:button Text="Page2へ" OnClick="button_Click" runat="server" />
    </form>
    </body>
    </html>
    
    -------------------------------------------------------
    Response.RedirectをServer.Transferに置き換えただけで動作します。

    確かにプログラムの変更はそれだけなのですが、実行時にアドレスの表示を注意深く見てください。
    Response.Redirectを利用した場合はアドレスにPage2.aspxと表示されるのに、Server.Transferを利用した場合はPage2が表示されたときもアドレスはPage1.aspxのままになっています。
    Response.Redirectは、実はブラウザに対して指定したURLに問い合わせてくれ、という命令を投げているのです。このため、ブラウザからサーバに対してPage2.aspxに対する問い合わせがくることになります。
    これにたいして、Server.Transferはサーバの中で処理をしているプログラムが切り替わってPage2.aspxの処理が開始され、その結果がブラウザに送り出されることになります。

    なお、Panelコントロールを利用してあたかもページが遷移したかのように見せかけることも可能です。この場合は次のような1つのプログラムになります。
    -------------------------------------------------------
    <%@ Page Language="C#" %>
    <html>
    <head>
    <script runat="server">
    void button_Click(Object sender, EventArgs e) 
    {
        Panel1.Visible=false;
        Panel2.Visible=true;
    }
    </script>
    </head>
    <body>
    <form id="myForm" runat="server">
    <asp:Panel id="Panel1" runat="server">
    このページはPage1です<br />
    <asp:button Text="Page2へ" OnClick="button_Click" runat="server" />
    </asp:Panel>
    <asp:Panel id="Panel2" runat="server" Visible="false">
    このページはPage2です
    </asp:Panel>
    </form>
    </body>
    </html>
    
    -------------------------------------------------------


    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
RSS ニュースフィードで参照
SkinName:iroha_CS2
Powered by Community Server, by Telligent Systems