2016-10-03 1 views
1

Ich habe Aspx Upgrade-Projekt auf MVC. Jetzt rufen einige meiner alten Kunden URL mit ASPX-Seite und sie erhalten 404 (nicht gefunden) in MVC-Projekt.Wie Umleitung benutzerdefinierte aspx-Seite zu mvc Aktion

So jetzt muss ich ASPX auf Mvc-Seite umleiten.

Alt URL

www.domain.com/bookshop/pc-58573-53-{product_name}.aspx 

Neue URL

www.domain.com/{product_name} 

ich über Routing-Mechanismus von MVC zu tun denke. wie einmal diese Art von URL kommen dann sollte es meine benutzerdefinierte MVC-Aktion aufrufen und in String-Parameter bekomme ich pc-58573-53- {Produktname} .aspx

Können Sie bitte schlagen Sie einen besten Weg, um dies mit minimalen zu tun Code.

+0

dank @sachin für Antwort – bhargav

Antwort

1

Definieren Sie einfach eine Aktion mit Route 'bookshop/{pageName}'

Hier sind Beispiele für zwei Szenarien Routen Attribut:

Im Fall Sie die URL nicht ändern wollen:

[Route("bookshop/{pageName}")] 
public ActionResult MyAction(string pageName) 
{ 
    // add logic according to what you receive in pageName property 
    return View(); 
} 

oder, Wenn Sie auf eine neue URL umleiten möchten:

[Route("bookshop/{pageName}")] 
public ActionResult MyAction(string pageName) 
{ 
    // Create and use a method to ExtractProductNameFromPageName 
    string productName = ExtractProductNameFromPageName(pageName); 
    return Response.Redirect("~/" + productName); 
} 

Der Parameter 'pageName' hier sollte den Seitennamen nach 'bookshop/' abfangen.

Im Fall Sie haben keine Route Attributzuordnung aktiviert ist, fügen Sie folgenden Code in RegisterRoutes Methode der RouteConfig.cs Datei:

// enable mapping of routes defined using Route attribute on specific actions. 
routes.MapMvcAttributeRoutes(); 
+0

Ich habe dies versuchen, aber nicht immer Anruf in Aktion. Ich muss die Route irgendwo definieren? – bhargav

+0

@sachin, Dies wird in diesem Fall nicht funktionieren, weil hier OP * 301 mehrere Seiten Redirect * und Attribut-Routing kann nicht das Ding getan es selbst, wie ich weiß! –

+0

@Div Danke, dass ich darauf hingewiesen habe, ich habe die Antwort aktualisiert, um auch dieses Szenario zu behandeln. – sachin

Verwandte Themen