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