Aspx-Seite, um zu einer neuen Seite umzuleiten

73

Welcher Code ist erforderlich, um den Browser auf eine neue Seite mit einer ASPX-Seite umzuleiten?

Ich habe dies auf meiner Seite default.aspx versucht:

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

oder

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

Und diese führten zu einem Serverfehler, der unbestimmt ist. Ich kann den Fehlercode nicht sehen. weil der Server nicht in meiner Kontrolle ist und die Fehler nicht öffentlich sind.

Bitte geben Sie den gesamten erforderlichen Code von Zeile 1 der Seite bis zum Ende ein, und ich würde mich sehr darüber freuen.

Stoob
quelle

Antworten:

149
<%@ Page Language="C#" %>
<script runat="server">
  protected override void OnLoad(EventArgs e)
  {
      Response.Redirect("new.aspx");
  }
</script>
Darin Dimitrov
quelle
11
Was ist der Zweck base.OnLoad(e);danach zu haben Response.Redirect(..)?
Tapan
Darin, ich weiß, es ist eine sehr alte Antwort, aber gibt es einen Grund dafür base.OnLoad?
Gdoron unterstützt Monica
@gdoron Ich denke, es ist nur da, weil Visual Studio Autocomplete es einfügt, wenn Sie mit der Eingabe der OnLoadMethode beginnen. Ohne es scheint es genauso gut zu funktionieren.
Kevin Panko
Ich wünschte, ich hätte diese Antwort nicht gewählt. Jetzt kann ich nicht dafür stimmen, dass 50% redundanter Code enthalten ist ... :( Darin, Sie sollten ihn wirklich bearbeiten oder erklären, warum Sie den Aufruf der Basismethode
eingefügt haben
23

Sie können dies auch einfach in HTML mit einem Meta-Tag tun :

<html>
<head>
  <meta http-equiv="refresh" content="0;url=new.aspx" />
</head>
<body>
</body>
</html>
jrummell
quelle
Ernsthaft, was ist mit den Abstimmungen? Wenn Sie lediglich auf eine andere Seite umleiten müssen, müssen Sie ASP.Net nicht verwenden. Wenn Sie einen Nagel einschlagen müssen und zwischen einem normalen Hammer und einem Vorschlaghammer wählen können, welchen würden Sie wählen? Ich hoffe du würdest den normalen Hammer sagen.
Jrummell
1
Dies war eine HTML-Lösung für ein asp.net-Problem.
Daniel A. White
1
Richtig, aber HTML ist ein RIESIGER Teil von ASP.NET.
Jrummell
11
W3C hat die Verwendung des META-Elements zum Aktualisieren oder Umleiten abgelehnt. w3.org/TR/WCAG10-HTML-TECHS/#meta-element
Jason Stangroome
4
Ich bin damit einverstanden, dass es nicht die beste Antwort ist, aber dennoch eine Antwort.
Jrummell
17

Darins Antwort funktioniert großartig. Es wird eine 302-Umleitung erstellt. Hier ist der Code, der so geändert wurde, dass eine permanente 301-Umleitung erstellt wird:

<%@ Page Language="C#" %>
<script runat="server">
  protected override void OnLoad(EventArgs e)
  {
      Response.RedirectPermanent("new.aspx");
      base.OnLoad(e);
  }
</script>
Mikael Koskinen
quelle
Schön! Die SEO-Leute haben das geliebt.
Callisto
Wow, darüber habe ich bis jetzt nicht gesprochen.
verstohlener
Bitte beachten Sie, dass dies .net Framework 4.0 und höher ist. nicht Framework 2 usw. Siehe msdn.microsoft.com/en-us/library/…
GlennG
12

Wenn Sie VB verwenden, müssen Sie das Semikolon löschen:

<% Response.Redirect("new.aspx", true) %>
wweicker
quelle
3
Funktioniert auch gut für mich und es ist eine kürzere Antwort.
Omarrr
5

Oder Sie können Javascript verwenden, um auf eine andere Seite umzuleiten:

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

Rufen Sie diese toRedirect()Funktion vom Client (z. B. Onload-Ereignis des Body-Tags) oder vom Server mit folgenden Funktionen auf:

ClientScript.RegisterStartupScript(this.gettype(),"Redirect","toRedirect()",true);
Prasad Jadhav
quelle
2

Auch wenn Sie den Server nicht steuern, können Sie die Fehlermeldungen anzeigen, indem Sie der Datei Web.config in Ihrem Projekt die folgende Zeile hinzufügen (bewlow <system.web>):

<customErrors mode="off" />
SLaks
quelle
0

Aspx umleiten:

<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>
verrückter Meister
quelle
0

In einem speziellen Fall in ASP.NET Wenn Sie wissen möchten, ob die Seite von einer angegebenen ASPX-Seite und nicht von einer anderen Seite umgeleitet wird, geben Sie die Informationen einfach in einen Sitzungsnamen ein und ergreifen Sie die erforderlichen Maßnahmen im empfangenden Page Load-Ereignis.

marcob
quelle