aspx页面重定向到新页面


74

将浏览器重定向到带有ASPX页面的新页面需要什么代码?

我已经在我的页面default.aspx上尝试过此操作:

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

要么

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

并且这些导致未确定的服务器错误。我看不到错误代码;因为服务器不在我的控制范围内,并且错误不公开。

请提供从页面第1行到末尾所有必要的代码,我将非常感谢。

Answers:


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

11
什么是具有目的base.OnLoad(e);Response.Redirect(..)
塔潘2014年

达林(Darin)我知道答案很老,但是有理由base.OnLoad吗?
gdoron支持Monica

@gdoron我认为它只是在那里,因为Visual Studio自动完成功能会在您开始键入OnLoad方法时将其插入。没有它,它似乎也可以正常工作。
凯文·潘科

我希望我不会投票赞成这个答案。现在,我可以不下来投它具有其50%的冗余代码... :(达林你真的应该编辑或解释为什么你包括调用基方法。
gdoron正在支持莫妮卡

23

您也可以使用meta标记在html中实现此功能:

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

严重的是,否决票是什么?如果您需要使用的只是重定向到另一个页面,则不必使用ASP.Net。如果您需要打钉子,并且可以选择普通锤和大锤,您会选择哪一种?我希望你会说普通的锤子。
jrummell

1
这是解决asp.net问题的html解决方案。
丹尼尔·A·怀特

1
是的,但是html是ASP.NET的巨大组成部分。
jrummell

11
W3C不建议使用META元素进行刷新或重定向。w3.org/TR/WCAG10-HTML-TECHS/#meta-element
Jason Stangroome 2012年

4
我同意这不是最好的答案,但仍然是一个答案。
jrummell 2012年

18

达林的答案很棒。它创建一个302重定向。这是修改后的代码,以便创建永久的301重定向:

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

好一个!SEO家伙喜欢这个。
callisto 2013年

哇,直到现在我才知道。
偷偷摸摸的

请注意,这是.net framework 4.0及更高版本;没有框架2等见msdn.microsoft.com/en-us/library/...
GlennG

12

如果使用的是VB,则需要删除分号:

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

3
对我也很好,这是一个简短的答案。
omarrr 2013年

5

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

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

toRedirect()从客户端(例如:body标签的onload事件)或使用以下命令从服务器调用此函数:

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事件中采取必要的操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.