2013-02-28 28 views

risposta

9

Si prega di provare con la soluzione di seguito. In global.asax.cs

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

Ma si necessaria per mantenere l'unicità in productName a prendere record che in azione indice del controller di prodotto (cioè in controller di prodotto:

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

È possibile aggiungere un percorso al motore di routing MVC in questo modo -

In Global.asax.cs

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

Questo vi permetterà di avere URL tipo

www.domain.com/productid/productname 

Il motivo si può o non può essere in grado di raggiungere

www.domain.com/productname 

è che isn productName' t un identificatore e non può essere usato per cercare un record in modo univoco. Avresti bisogno di un identificatore nell'URL.

Ex - guarda l'URL per questa domanda in SO, ha l'ID e quindi aggiunge il test SEO friendly.

+0

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

0

Creare un nuovo percorso nel Global.asax per gestire questo:

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 ha percorso integrato, quindi non è necessario per l'URL masterizzatore.

più

dettagli here

12

Questo è il miglior articolo per cominciare -> SEO Friendly URls
L'articolo spiega anche come rimuovere gli spazi bianchi e trattini.