2016-05-25 10 views
1

Ich möchte meine URLs SEO freundlich machen. Ich habe eine Menge von Artikeln und anderen Beiträgen zu diesem Thema gesehen, aber alle von ihnen endet mit Urls wie: /Products/34/my-handbagMVC 5, wahre SEO Friendly Routes

Ich möchte mit Urls wie am Ende: /gucci/my-handbag

Ich habe bereits die Kontrollen tatsächlich Holen Sie sich das Produkt aus den Namen "Gucci" und "My-Handtasche", ich brauche nur mein Routing, um mich an Products Controller zu senden.

Dies ist, was ich mit jetzt arbeite:

routes.MapRoute(
    name: "ProductDetails", 
    url: "{brand}/{title}", 
    defaults: new { controller = "ProductViews", action = "Details", brand = "", title = "" } 

Irgendwelche Vorschläge?

+0

Siehe [diese Antwort] (http://stackoverflow.com/questions/31934144/multiple-levels-in-mvc-custom-routing/31958586#31958586) für den flexibelsten Ansatz. – NightOwl888

Antwort

2

Sie sind auf dem richtigen Weg. Sie können eine URL wie: www.domain.com/gucci/some-gucci-product-name mit der folgenden Route generieren.

Sie können mit dem Titel umgehen, suchen Sie nach dem Produkt in db, wenn es einzigartig ist. Wenn Sie am Ende der URL eine eindeutige Nummer hinzufügen müssen, z. www.domain.com/gucci/some-gucci-product-name-13456

routes.MapRoute(
"Default", // Route name 
"{Brand}/{Details}-{id}", // URL with parameters 
new { controller = "ProductViews", action = "Details", Brand = UrlParameter.Optional, Details = UrlParameter.Optional, id=UrlParameter.Optional }// Parameter defaults 
); 

Hoffe, es hilft.

+0

Hallo, danke für deinen Vorschlag. Es funktioniert einfach nicht, ich bekomme immer noch "Die Ressource kann nicht gefunden werden." –

+0

Können Sie die Signatur der Controller-Aktion senden, die die Route und die verwendete Routendefinition behandeln soll? – ali

+0

routes.MapRoute ( "Default", // Routenname "{Marke}/{} Einzelheiten", // URL mit Parametern new {controller = "ProductViews" action = "Details", Marke = UrlParameter.Optional , Details = UrlParameter.Optional} // Standardwerte der Parameter ); –