2011-01-07 3 views
1

Wir entwickeln ein neues System, um ein bestehendes System zu ersetzen.Wie kann ich Homepage.aspx auf eine MVC-Standardroute umleiten?

Das neue System ist ASP.NET MVC, also definieren wir Routen zu unseren Controllern und Aktionen wie gewohnt.

Das alte System als traditionelle ASP.NET, so dass die URLs bestehen aus vielen ASPX-Seiten.

Wir wollen Umleitungen einzurichten, so dass, wenn ein Benutzer /Homepage.aspx (viele Benutzer würden, dass merkt) zugreifen will, werden sie auf das neue System der Standardroute erhalten umgeleitet, das gerade ist /

Was ist der beste Weg für mich, dies zu tun?

edit: @Chance unterhalb schlug ich die Strecke angeben:

routes.MapRoute("Homepage", "Homepage.aspx", new { controller = "controller", action = "homepage" });

Dies funktioniert, aber ich möchte eine Umleitung tun, weil ich nicht Homepage.aspx in der Adressleiste wollen . Kann ich noch etwas tun?

Antwort

5

Sie können einen Blick auf die following blog post nehmen, die zeigt, wie Sie eine Legacy-Route-Handler implementieren könnte, die 301 permanente Umleitungen durchführen wird.

+0

das hat den Trick gemacht, obwohl es bemerkt werden sollte, dass der Code im Blogpost selbst nicht funktioniert. Der Code in dem Beispielprojekt, mit dem er verknüpft ist, funktioniert jedoch folgendermaßen: http://www.eworldui.net/files/MvcDemos/LegacyRouting.zip – DaveDev

+1

Ich habe versucht, dieses Beispiel zu verwenden, aber ich sehe 301 nicht in fiddler und die alte URL ist immer noch im Browser. Intern wird auf die gewünschte Ansicht umgeleitet, wie zeige ich die neue URL im Browser an? – Picflight

+0

Link angegeben, öffnet nicht. – Sudarshan

1

Sie können Ihrem Standard-Controller/Aktion einfach eine zusätzliche Route geben, die fest codiert ist.

Ie

routes.MapRoute("Homepage", "Homepage.aspx", new { controller = "controller", action = "homepage" });

+0

Das funktioniert, aber ich möchte eine Weiterleitung machen, weil ich 'Homepage.aspx' in der Adressleiste nicht möchte. – DaveDev

+0

Dies funktionierte nicht für mich, irgendetwas, das ich außer dem oben genannten Code vermissen würde? Ich benutze MVC3. – Picflight

+0

@DaveDev, können Sie ein Redirect-Ergebnis (permanent) zurückgeben. – Chance

0

Eine andere Option wäre, einfach eine statische Seite zu erstellen, um HomePage.aspx durch eine Meta-Weiterleitung zu ersetzen. Auf diese Weise können Sie dem Benutzer eine Nachricht mit dem Hinweis geben, dass sich die Site geändert hat, und sie auffordern, ihre Lesezeichen zu aktualisieren.

Sie können dies auf die gesamte Site erweitern, indem Sie einen benutzerdefinierten Fehlerhandler für 404 erstellen, der entweder auf eine statische Seite oder eine bestimmte URL verweist.

3

Setzen Sie diesen Code in Ihre Datei global.asax:

protected void Application_BeginRequest(object sender, EventArgs e) 
{  
    if (Request.Url.ToString().ToLower().Contains("homepage.aspx")) 
    {    
     Context.Response.StatusCode = 301; 
     Context.Response.Redirect("/"); 
    } 
} 

Sie diesen Code ändern könnte auch auf andere alte „aspx“ Seiten anzuwenden.

Verwandte Themen