1

Asp.net 4.0 を使用しています。ページ 1 からページ 2 への server.transfer を実行します。URL はページ 1 のままです。ここで、ページ 2 のリンクをクリックすると、ページ 3 に移動します。したがって、URL はページ 1 のままにする必要があります。ページ 2 の URL。それは予想される動作ですか?

私は実際にページの URL を非表示にしようとしていました。

誰でもこれについて私を助けることができます.

スタックオーバーフローに関する重複した質問があることは知っていますが、説得力のある答えがなく、質問も4歳です。これを手伝うか、これを達成するためのより良い方法を提案してください

コード :

1ページ目

Btn1_Click(object sender, EventArgs e)
{

server.Transfer("Page2.aspx");

}

ページ 2 で

Btn2_Click(object sender, EventArgs e)
{

server.Transfer("Page3.aspx");

}
4

2 に答える 2

3

覚えて 「Server.Transfer はアドレスバーの URL を変更しません」

このサイトを確認すると、Server.Transfer と Response.Redirect について明確なアイデアが得られます

https://www.youtube.com/watch?v=xJVjRUHXYbE&index=54&list=PL6n9fhu94yhXQS_p1i-HLIftB9Y7Vnxlo

Server.Transfer を使用する場合

例:

Page1.aspx、Page2.aspx

page1.aspx では、このようなボタンクリックのコードを想定しています

Server.Transfer("~/page2.aspx");

次に、page2.aspx にリダイレクトしますが、アドレス バーに表示される URL は同じです。page2.aspx にいるにもかかわらず、page1.aspx。

Response.Redirect を使用すると、page2.aspx にリダイレクトしたときに page2.aspx が表示されます

あなたの質問に来る:

これは予期される動作です。

Server.Transfer を 2 回目に使用する場合、Url の変更を要求します

初めて page1.aspx を実行すると、次のように表示されます

Address Bar : `http://localhost:1234/WebSite3/Page1.aspx`

Action Name : "page1.aspx"//see pagesource

page1.aspx のボタンをクリックすると、page2.aspx が表示されますが、次のような同じ URL が表示されます。

Address Bar : `http://localhost:1234/WebSite3/Page1.aspx`  but different

Action Name="page2.aspx"//see pagesource

page2.aspx のボタンをクリックすると、page3.aspx が表示されますが、URL は次のように異なります。

Address Bar : `http://localhost:1234/WebSite3/Page2.aspx`  but different 

Action Name="page3.aspx"//see pagesource

ここでは、URL が page1.aspx であるにもかかわらず、要求が page2.aspx から来ているにもかかわらず、別の URL を見つけます。ページ ソースを参照してください。

于 2014-05-09T07:23:41.943 に答える
2

Arjun さん、page2.aspx はレンダリング後にサーバー呼び出しを行っています。名前の変更を引き起こしているのは、そのサーバー呼び出しです。Server.Transfer は名前を変更しません。

この問題が IE で発生するかどうかを確認してください。そうでない場合は、ページで参照されている特定の画像が欠落している可能性があります。それ以外の場合は、フィドラーを使用してサーバー呼び出しを監視します

于 2015-07-07T13:23:31.293 に答える