Получить URL предыдущей страницы после Response.Redirect
Я пытаюсь получить URL предыдущей страницы после того, как напишу ответ, и я просмотрел сеть, и люди используют HTTP_REFERER
но это не работает с Response.Redirect, так есть ли в любом случае, чтобы получить URL предыдущей страницы?
У меня есть этот код на нескольких страницах, и мне нужно знать, с какой страницы он идет, когда он попадает на servererror/default.aspx
страница
Response.Redirect("servererror/default.aspx?404")
И на моем servererror/default.aspx
страница, я просто пытаюсь захватить URL предыдущей страницы и поместить его в сессию Session("ErrorPage")
Спасибо
Джейми
ОБНОВИТЬ
Теперь у меня есть так работать
Response.Redirect("server-error.aspx?404&" & Request.Url.ToString())
Это передает URL-адрес страницы с ошибкой на следующую страницу, а затем я получаю его из строки запроса
Спасибо
Джейми
4 ответа
Вы можете передать URL предыдущей страницы URL-адресу страницы ошибки. что-то вроде
Response.Redirect("servererror/default.aspx?404&url=/folder/page.aspx")
А затем получите значение URL на странице ошибки и перенаправьте его на предыдущую страницу.
Имейте в виду, что делает Response.Redirect: он выдает 302 "найдено" клиенту. Этот код ответа предназначен для указания того, что искомый контент находится не в том месте, которое вы запрашивали, а в другом месте.
Учитывая эту информацию; тогда страница, которая выдает Response.Redirect, вообще не является "реферером". Вот почему страница, которая ссылалась на эту страницу, все еще указывается как упомянутая.
Как указано выше, вы должны включить в строку URL, которую вы перенаправляете, любую дополнительную информацию, которая вам нужна, например, URL текущей страницы.
Вместо этого вы можете попробовать server.transfer, чтобы увидеть, заполняет ли он значение HTTP_REFERER.
Я знаю, что это старый пост, чтобы ответить Даже парень, который разместил этот вопрос, нашел какой-то обходной путь для решения своего вопроса............. но вчера поздно вечером я столкнулся с той же трудностью, поэтому у меня есть прийти с обходным путем, который работает над моим делом...
У меня есть 2 страницы Page1.aspx и Page2.aspx У меня есть Button1 и Button2 на Page1.aspx теперь, каков сценарий, когда я перенаправляю на Page2.aspx, я хочу получить доступ к элементам управления Page1.aspx, который называется Предыдущая страница..... Так что я использую PostBackURL кнопки, но в этом случае я не получаю событие Click на CodeBehind......... так как мне решить эту проблему............ Что я сделал, так это то, что я установил Button2.PostBackURL = "Page2.aspx", и когда срабатывает событие нажатия кнопки Button1, я регистрирую скрипт запуска, который вызывает событие Button2.click, так что теперь я получаю элементы управления предыдущей страницы..........
Вот код..... если кто-то ищет такую же функциональность............ ему в каком-то смысле помогут........
Код aspx
<asp:Button ID="btnSave" runat="server" Style="font-weight: 700" Text="Save"
onclick="btnSave_Click" />
Code-Behind
protected void btnSave_Click(object sender, EventArgs e){
try
{
StringBuilder objStringBuilder = new StringBuilder();
objStringBuilder.AppendLine("<script type='text/javascript' language='javascript'>");
objStringBuilder.AppendLine("document.getElementById('" + btnHidden.ClientID + "').click();");
objStringBuilder.AppendLine("</script>");
ClientScript.RegisterStartupScript(Page.GetType(),"Key1", objStringBuilder.ToString());
}
catch (Exception ex)
{
throw ex;
}}
С уважением,