Получить URL предыдущей страницы после Response.Redirect - PullRequest
4 голосов
/ 27 сентября 2010

Я пытаюсь получить 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 ]

6 голосов
/ 27 сентября 2010

Вы можете передать URL предыдущей страницы URL-адресу страницы ошибки.что-то вроде

Response.Redirect("servererror/default.aspx?404&url=/folder/page.aspx")

А затем получите значение URL на странице ошибки и перенаправьте его на предыдущую страницу.

2 голосов
/ 27 сентября 2010

Имейте в виду, что делает Response.Redirect: он выдает 302 «найдено» клиенту. Этот код ответа предназначен для указания того, что искомый контент находится не в том месте, которое вы запрашивали, а в другом месте.

Учитывая эту информацию; тогда страница, которая выдает Response.Redirect, вообще не является «реферером». Вот почему страница, ссылающаяся на эту страницу, по-прежнему указывается как указанная.

Как указано выше, вы должны включить в строку URL, которую вы перенаправляете, любую дополнительную информацию, которая вам нужна, например, URL текущей страницы

2 голосов
/ 27 сентября 2010

Вместо этого вы можете попробовать server.transfer, чтобы увидеть, заполняет ли он значение HTTP_REFERER.

1 голос
/ 22 мая 2011

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

У меня есть 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" />

Код сзади

    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;
    }}

С уважением,

...