Response.AddHeader в файле ascx - PullRequest
       5

Response.AddHeader в файле ascx

3 голосов
/ 01 апреля 2011

Можно ли использовать Response.AddHeader, в частности, я пытаюсь использовать его «Обновить». Мне нужно сделать паузу, прежде чем он перенаправит , но место, где выполняется код, находится в ASCX в коде позади. Он ничего не делает, когда в моем Codebehind есть следующее:

HttpContext.Current.Response.AddHeader("Refresh", "6;URL=Default.aspx");

Как я могу перенаправить пользователя в коде на странице ascx?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

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

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

Refresh: 0; url=http://www.example.com/

Альтернативный подход, возможно, более легкий для отладки, заключается в использовании мета-тега вместо заголовка HTTP, поэтому он фактически отображается в разметке. Что-то вроде:

var metaControl = new HtmlMeta
  {
    Content = "2;url=http://webdesign.about.com/",
    HttpEquiv = "refresh"
  };
Page.Header.Controls.Add(metaControl);

Это добавит тег <meta> в ваш раздел <head>, который должен иметь желаемый эффект.

2 голосов
/ 01 апреля 2011

Вы пробовали

if(today == "Friday")
{
   Response.Redirect("destination.aspx")
}

Если это не сработает, пожалуйста, уточните, что вы пытаетесь достичь.

...