ASPX页面重定向到新页面

80

如何用ASPX页面代码将浏览器重定向到新页面?

我在我的default.aspx页面尝试了以下代码:

<% Response.Redirect("new.aspx", true); %>

<%@ Response.Redirect("new.aspx", true); %>

这些导致了一个不确定的服务器错误。我无法看到错误代码, 因为服务器不在我的控制范围内,而且错误信息也不是公开的。

请提供从页面第一行到最后所有必要的代码,我将非常感激。

9个回答

157
<%@ Page Language="C#" %>
<script runat="server">
  protected override void OnLoad(EventArgs e)
  {
      Response.Redirect("new.aspx");
  }
</script>

11
Response.Redirect(..) 后面加上 base.OnLoad(e); 的目的是什么? - Tapan
Darin,我知道这是一个非常老的答案,但是base.OnLoad有什么原因吗? - gdoron
@gdoron 我认为这只是因为当你开始输入"OnLoad"方法时,Visual Studio自动完成会插入它。没有它似乎也能正常工作。 - Kevin Panko
我希望我没有点赞这个答案。现在我不能因为其中有50%的冗余代码而取消点赞... :( Darin,你真的应该编辑一下或者解释一下为什么要包含基础方法的调用。 - gdoron

26

您也可以使用带有meta标签的纯HTML来实现此操作:

<html>
<head>
  <meta http-equiv="refresh" content="0;url=new.aspx" />
</head>
<body>
</body>
</html>

2
说真的,为什么会有人点踩呢?如果你只需要重定向到另一个页面,就不必使用ASP.Net。如果你需要钉一根钉子,你会选择普通的锤子还是大锤子呢?我希望你会选择普通的锤子。 - jrummell
2
这是一个针对asp.net问题的html解决方案。 - Daniel A. White
1
没错,但 HTML 是 ASP.NET 的一个非常重要的组成部分。 - jrummell
12
W3C已弃用META元素用于刷新或重定向页面。 http://www.w3.org/TR/WCAG10-HTML-TECHS/#meta-element - Jason Stangroome
4
我同意这不是最好的答案,但仍然是一个答案。 - jrummell
显示剩余9条评论

19

Darin的答案非常有效。它创建了一个302重定向。以下是修改后的代码,以创建永久的301重定向:

<%@ Page Language="C#" %>
<script runat="server">
  protected override void OnLoad(EventArgs e)
  {
      Response.RedirectPermanent("new.aspx");
      base.OnLoad(e);
  }
</script>

不错!SEO的人很喜欢这个。 - callisto
哇,直到现在我才知道那件事。 - furtive
请注意,这是 .net framework 4.0 及更高版本;而不是 framework 2 等。请参阅 http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx。 - GlennG

14
如果你正在使用VB,你需要删除分号:
<% Response.Redirect("new.aspx", true) %>

3
对我来说也能正常工作,而且这是一个更短的答案。 - omarrr

5

或者您可以使用JavaScript重定向到另一个页面:

<script type="text/javascript">
    function toRedirect() {
        window.location.href="new.aspx";
    }
</script>

从客户端(例如:body标签的onload事件)或者服务器上,使用以下代码调用toRedirect()函数:

ClientScript.RegisterStartupScript(this.gettype(),"Redirect","toRedirect()",true);

2

即使您无法控制服务器,只需在项目的Web.config文件中添加以下行(在<system.web>下方)即可查看错误消息:

<customErrors mode="off" />

0

重定向 aspx:

<iframe>

    <script runat="server">
    private void Page_Load(object sender, System.EventArgs e)
    {
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","http://www.avsapansiyonlar.com/altinkum-tatil-konaklari.aspx");
    }
    </script>

</iframe>

0
在ASP.NET中的一个特殊情况下,如果您想知道页面是否被指定的.aspx页面重定向而来,而不是其他页面,只需将信息放入会话名称中,并在接收Page_Load事件时采取必要的操作。

0

只需放置您想要开始的页面。 已经有人提供了类似的答案。 它有效且易于操作。

<meta http-equiv="refresh" content="0;url=START_PAGE_Current.html" />

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