URL браузера изменяется даже после использования Server.Transfer

Я использую Asp.net 4.0. Я выполняю server.transfer со страницы 1 на страницу 2. URL остается страницей 1. Теперь я нажимаю ссылку на странице 2, и я перехожу на страницу 3. Таким образом, URL должен оставаться страницей 1. Вместо этого браузер теперь показывает URL страницы 2. Это ожидаемое поведение?

Я на самом деле пытался скрыть URL страницы.

Кто-нибудь может мне помочь в этом.

Я знаю, что есть переполнение вопроса о переполнении стека, но на него нет убедительного ответа, и этому вопросу тоже 4 года. Пожалуйста, помогите мне с этим или предложите лучший способ добиться этого

Код:

На странице 1

Btn1_Click(object sender, EventArgs e)
{

server.Transfer("Page2.aspx");

}

На странице 2

Btn2_Click(object sender, EventArgs e)
{

server.Transfer("Page3.aspx");

}

2 ответа

Решение

Помните: "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-адрес в адресной строке будет таким же, т.е. page1.aspx, хотя вы находитесь в page2.aspx.

когда вы используете Response.Redirect, он покажет page2.aspx, когда вы будете перенаправлены на page2.aspx

Подходя к вашему вопросу:

Это ожидаемое поведение.

Вы спрашиваете об изменениях URL, если вы используете Server.Transfer во второй раз

Если вы запускаете 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-адрес, почему, хотя ваш URL-адрес является page1.aspx, но ваш запрос поступает с page2.aspx, см. Страницу source. По этой причине URL-адрес изменяется с page1.aspx на page2.aspx.

Arjun, вы page2.aspx делаете серверные вызовы после того, как он отрендерен. Именно этот вызов сервера вызывает изменение имени. Server.Transfer не изменит ваше имя.

Проверьте, если эта проблема возникает в IE, если нет, возможно, вам не хватает определенных изображений, на которые ссылается страница. Еще смотреть сервер звонки с помощью Fiddler

Другие вопросы по тегам