サーバ側でページを遷移させる方法には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>
-------------------------------------------------------
あおい情報システム株式会社 小野修司(どっとねっとふぁん)