在ascx文件中使用Response.AddHeader

3

是否可以使用Response.AddHeader,特别是我正在尝试使用其中的“Refresh”。我需要在重定向之前暂停,但代码运行的位置在codebehind的ASCX中。当我在我的Codebehind中有以下内容时,它什么也不做:

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

在ascx页面的codebehind中,有没有办法重定向用户?
2个回答

3
我不知道为什么这对你不起作用-似乎这是添加重定向到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);

这将会在你的<head>区域添加一个<meta>标签,这样就可以达到预期的效果。

2

你尝试过吗?

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

如果这不起作用,请更具体地说明您要达成的目标。

Response.Redirect 对我的情况不起作用,我明确说明了我需要在重定向之前暂停,而使用 Response.Redirect 唯一的暂停方法是使用 Thread.Sleep 这样的东西,这只会导致糟糕的编程。我所寻找的就是一种从 ascx 文件重定向用户的方法。 - atrljoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接