Antwort

9

Bitte versuchen Sie mit Lösung unten. In global.asax.cs

routes.MapRoute(
    "Product", 
    "{productName}", 
    new { controller = "Product", action = "Index" }, 
    new { productName = UrlParameter.Optional } 
); 

Aber Sie erforderlich Einzigartigkeit in productName zu halten und Rekord holen durch, dass in Index Wirkung von Produktcontroller (dh in der Produkt Controller:

public ActionResult index(string productName) 
{ 
    //do something regarding get product by productname 
} 
8

Sie können auf diese Weise eine Route zu Ihrer MVC-Routing-Engine hinzufügen -

In Global.asax.cs

routes.MapRoute(
    "Product", 
    "{controller}/{productId}/{productName}", 
    new { controller = "Product", action = "Index" }, 
    new { productId = UrlParameter.Optional , productName = UrlParameter.Optional } 
); 

Diese Sie URL wie

www.domain.com/productid/productname 

Der Grund, warum Sie können oder nicht in der Lage sein haben, können zu erreichen

www.domain.com/productname 

ist, dass Produktname isn‘ t ein Bezeichner und kann nicht dazu verwendet werden, einen Datensatz eindeutig zu suchen. Sie benötigen eine Kennung in der URL.

Ex - schauen Sie sich die URL für diese Frage in SO an, sie hat die ID und fügt dann einen SEO Test an.

+0

http://www.deliveron.com/blog/post/SEO-Friendly-Routes-with-ASPnet-MVC.aspx –

0

Erstellen Sie eine neue Route in der Global.asax zu handhaben:

routes.MapRoute(
     "productId",     // Route name 
     "productId/{id}/{name}",  // URL with parameters 
     new { controller = "Home", action = "productId", id = 1234, name = widget } // Parameter defaults 
    ); 

Asp.Net MVC hat Routing integriert, so dass keine Notwendigkeit, dass die URL Rewriter.

mehr Details here

12

Dies ist der beste Artikel für den Anfang -> SEO Friendly URls
Der Artikel auch erklären, wie die Leerzeichen und Striche zu entfernen.